当前位置: 首页 > news >正文

花卉网站建设规划书/平面设计

花卉网站建设规划书,平面设计,网站建设设计师助理岗位介绍,公众号做电影采集网站会被封一、基本知识 1. 介绍 MyBatis 是 Apache 的一个开源项目,它封装了 JDBC,使开发者只需要关注 SQL 语句本身,而不需要再进行繁琐的 JDBC 编码。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java POJO(Plain …

在这里插入图片描述

一、基本知识

1. 介绍

  • MyBatis 是 Apache 的一个开源项目,它封装了 JDBC,使开发者只需要关注 SQL 语句本身,而不需要再进行繁琐的 JDBC 编码。
  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java POJO(Plain Old Java Objects)到数据库中的记录。
  • MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。

2. 特点

  • SQL 优先:MyBatis 让 SQL 语句可以清晰地写在 XML 文件或注解中,支持动态 SQL。
  • 简单易用:简化了 JDBC 代码,专注于 SQL 本身。
  • 灵活性强:可以根据需要自定义 SQL 语句,满足复杂查询需求。
  • 支持多种数据库:支持 MySQL、PostgreSQL、Oracle 等主流数据库。

3. Maybatis VS JDBC

特性JDBCMyBatis
SQL 编写与管理手动编写 SQL 并嵌入 Java 代码中。SQL 管理复杂,维护困难。SQL 语句可放在 XML 文件或注解中,代码与 SQL 分离,结构清晰。
参数处理手动设置 SQL 语句中的参数,代码量大且易出错。自动处理参数设置,简化代码。
结果集映射手动处理结果集并映射为 Java 对象,过程繁琐。自动将结果集映射为 Java 对象,支持复杂对象映射。
数据库连接管理需手动管理数据库连接和资源,易出现资源泄漏。使用内置连接池,自动管理连接,减少资源泄漏风险。
事务管理需手动处理事务。提供方便的事务管理功能,可通过配置或编程方式管理事务。
动态 SQL 支持需通过字符串拼接实现动态 SQL,易引发 SQL 注入问题,代码难维护。提供强大的动态 SQL 支持,通过 XML 标签或注解生成动态 SQL,安全易维护。
缓存支持不直接提供缓存机制,需自行实现。内置一级缓存和二级缓存,通过配置轻松启用缓存。
开发效率需编写大量样板代码,开发效率较低。减少样板代码,提高开发效率。
灵活性提供底层 API,允许对数据库操作进行精细控制。提供灵活的 SQL 控制,适合需要直接编写 SQL 的场景。

二、Mybatis的基本使用

1. 环境配置

  • 添加依赖(以 Maven 为例):在配置文件中添加mybtis依赖
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version>
</dependency>

2. 配置数据库连接

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments><mappers><mapper resource="com/example/mapper/UserMapper.xml"/></mappers>
</configuration>

3. 基本使用(以用户管理为例)

  • 创建用户实体类
public class User {private int id;private String name;private String email;private int age;private String address;
}
  • 定义mapper接口
import org.apache.ibatis.annotations.*;
import java.util.List;
public interface UserMapper {
//简单的查询实际上不用定义XML文件,直接在mapper接口上面即可@Select("SELECT * FROM users WHERE id = #{id}")User getUserById(int id);List<User> getAllUsers();@Options(useGeneratedKeys = true, keyProperty = "id")void insertUser(User user);void updateUser(User user);void deleteUser(int id);
}
  • 编写 Mapper XML 文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper"><select id="getAllUsers" resultType="User">SELECT * FROM users</select><insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">INSERT INTO users (name, email, age, address) VALUES (#{name}, #{email}, #{age}, #{address})</insert><update id="updateUser" parameterType="User">UPDATE users SET name = #{name}, email = #{email}, age = #{age}, address = #{address} WHERE id = #{id}</update><delete id="deleteUser" parameterType="int">DELETE FROM users WHERE id = #{id}</delete>
</mapper>

:Mybatis使用只需要定义mapper接口,不用再有具体的实现

三、Mybatis动态sql

MyBatis 提供了强大的动态 SQL 功能,允许开发者根据不同的条件动态生成 SQL 语句。动态 SQL 通常用于处理复杂的查询条件或可选的查询参数。MyBatis 的动态 SQL 是通过 XML 配置文件中的一些特殊标签来实现的,这些标签包括 if, choose, when, otherwise, trim, where, set 和 foreach 等。长常见标签的使用如下:

1. if 标签

  • if标签用于根据条件动态生成 SQL 片段。如果条件为真,则包含该 SQL 片段;否则忽略。
<select id="findUsers" parameterType="map" resultType="User">SELECT * FROM users<where><if test="name != null">AND name = #{name}</if><if test="email != null">AND email = #{email}</if><if test="age != null">AND age = #{age}</if></where>
</select>

2. choose>标签

  • choose 标签类似于 Java 中的 switch 语句,用于选择其中一个条件。它包含多个 when 标签和一个可选的 otherwise 标签。
  • 示例
<select id="findUser" parameterType="map" resultType="User">SELECT * FROM users<where><choose><when test="id != null">AND id = #{id}</when><when test="name != null">AND name = #{name}</when><otherwise>AND email = #{email}</otherwise></choose></where>
</select>

3. where标签

  • where 标签自动添加 WHERE 关键字,并处理 SQL 片段的 AND/OR 前缀,在条件中使用动态sql时就需要使用where标签。
  • 示例
<select id="findUsers" parameterType="map" resultType="User">SELECT * FROM users<where><if test="name != null">AND name = #{name}</if><if test="email != null">AND email = #{email}</if><if test="age != null">AND age = #{age}</if></where>
</select>

4. set 标签

  • set 标签用于生成 UPDATE 语句中的 SET 子句,自动处理末尾的逗号。
  • 示例
<update id="updateUser" parameterType="User">UPDATE users<set><if test="name != null">name = #{name},</if><if test="email != null">email = #{email},</if><if test="age != null">age = #{age},</if><if test="address != null">address = #{address}</if></set>WHERE id = #{id}
</update>

5. foreach 标签

  • foreach 标签用于处理集合类型参数,如 List、Set 或数组。
  • 示例
<select id="findUsersByIds" parameterType="list" resultType="User">SELECT * FROM users WHERE id IN<foreach item="id" index="index" collection="list" open="(" separator="," close=")">#{id}</foreach>
</select>

四、使用注意事项

  1. Mapper接口和XML映射文件
  • 确保 XML 映射文件中的 namespace 与 Mapper 接口的全限定名完全匹配。
  • XML 映射文件中的 SQL 语句 ID 必须与 Mapper 接口中的方法名一致。
  • 确保 Mapper 接口方法的参数类型与 XML 中定义的 parameterType 一致。
  • 确保 Mapper 接口方法的返回类型与 XML 中定义的 resultType 或 resultMap 一致。
  1. 其他
  • 如果 Mapper 接口方法有多个参数,XML 中需要使用 @Param 注解来指定参数名称,或者使用 Map 作为参数类型
  • 当查询结果与实体类字段不完全匹配时,可以使用 ResultMap 进行映射
  • 在使用动态 SQL 时,尽量使用 MyBatis 提供的参数绑定方式,而不是直接拼接字符串,以防止 SQL 注入
  • 如果在 Mapper 接口中使用注解来定义 SQL 语句,则不需要在 XML 中重复定义,但确保注解和方法签名一致
http://www.jmfq.cn/news/5336479.html

相关文章:

  • 网站建设学生选课系统设计/暴风seo论坛
  • 网站建设包含的费用内容/搜索引擎怎么做
  • 建设网站如何给页面命名/抖音竞价推广怎么做
  • 网站建设需要哪些材料/seo舆情优化
  • 广东建设信息网是什么网站/乔拓云智能建站平台
  • 加强和改进校园网站内容建设/谷歌商店paypal下载官网
  • 网站建设 电脑 手机/seo优化搜索结果
  • 移动网站建设商/学生个人网页制作成品代码
  • 莞城微网站建设/seo都用在哪些网站
  • 河南省建设人才信息网站/优秀的网页设计网站
  • 中山网站建设文化平台/杭州优化外包哪里好
  • 保定市住房和城乡建设局网站/互联网广告平台代理
  • 网站建设资讯平台/职业技术培训
  • 淄博网站建设找卓迅/福州网站排名
  • 机场建设投资公司官方网站/网站外链分析工具
  • 宜昌建设网站/网店推广实训报告
  • 网站建设泽宇/百度企业推广怎么收费
  • 企业官方网站建设教程/外链seo招聘
  • 网站建设实训操作步骤/yoast seo教程
  • 视频网站的建设费用/百度账号管理
  • yfcms企业网站建设/搜索优化是什么意思
  • b站+网站建设/天津疫情最新消息
  • 淘宝刷网站建设/刷seo快速排名
  • 网站建设服务器百度云/百度高级搜索网址
  • 网站建设前期需要干嘛/企业培训课程价格
  • 金华网络公司网站建设/有什么推广的平台
  • 青岛知名网站建设/不付费免费网站
  • 三水区网站建设/国外网站建设
  • 郑州最好的网站建设/竞价托管推广
  • 网站建设个人简历的网页制作/邀请推广app