JavaEE——MyBatis 的使用方法

目录

一、定义

二、过程

三、配置

1、pom.xml依赖配置

2、application.properties配置

(1)、配置数据库的相关连接

(2)、配置MyBatis存放路径和命名格式

四、使用

1、基础设置

(1)、实体类

(2)、xml方式实现

【1】、Mapper接口

【2】、UserMapper.xml

(3)、注解方式实现

【1】、Mapper接口

2、基本功能

(1)、查询

【1】、xml方式

【2】、注解方式

(2)、修改

【1】、xml方式

【2】、注解方式

(3)、删除

【1】、xml方式

【2】、注解方式

(4)、增加

【1】、xml方式

【2】、注解方式

3、"#{}" 和 "${}" 区别

4、返回字典映射 resultMap

(1)、处理字段名和属性名不同

(2)、一对一或一对多关系可以使用 resultMap 映射并查询数据

五、动态SQL

1、<if>标签

2、<trim>标签

3、<where>标签

4、<set>标签

5、<foreach>标签


一、定义

后端开发的程序主要是由后端程序和数据库组成的,而这两个重要的组成部分想要通讯,就要依靠数据库连接工具。之前在 JavaWeb 的学习中所使用的JDBC便是一种数据库连接工具,但其操作却极为复杂繁琐。因此在 JavaEE 中引入了更为方便快捷的 MyBatis 来操作数据库。

MyBatis 是一种持久层框架,其支持自定义 SQL、存储过程和高级映射。MyBatis 的底层通过封装 JDBC 操作,去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。它可以通过简单的 XML 或注解来配置和映射原始类型、接口、普通老式 Java 对象作为数据库中的记录。因此 MyBatis 是更为简便的程序和数据库交互工具,能够更加简单的操作和读取数据库。 

二、过程

MyBatis 是一个 ORM(Object Relational Mapping) 框架——对象关系映射。能够将关系型数据库中的数据与对象建立映射关系,完成数据与对象的互相转换:

  • 将输入对象和 SQL 语句映射成原生 SQL 语句
  • 将结果集映射成输出对象

ORM 把数据库映射为对象

  • 数据库表--> 类
  • 记录--> 对象
  • 字段--> 对象的属性

因此使用 MyBatis 可以像操作对象一样操作数据库中的表,来实现对象和数据库表之间的转换。

三、配置

1、pom.xml依赖配置

在新建项目时,相比于普通的Spring Boot项目,此处需要通过勾选MyBatis Framework和MySQL Driver来添加依赖;如果是旧项目则需要自主在pom.xml中添加dependency依赖。

2、application.properties配置

(1)、配置数据库的相关连接

注:如果使用的 mysql-connector-java 是 5.x 之前的需要写入 com.mysql.jdbc.Driver,如果大于 5.x 需要使用 com.mysql.cj.jdbc.Driver。

(2)、配置MyBatis存放路径和命名格式

MyBatis的XML中保存是对于数据库的具体SQL操作

注:使用注解时可以不用配置存放地址和命名方式 

四、使用

1、基础设置

(1)、实体类

(2)、xml方式实现

【1】、Mapper接口

【2】、UserMapper.xml

<mapper>标签:需要指定 namespace 属性,表示命名空间,值为 mapper 接口的全限定
名。

(3)、注解方式实现

【1】、Mapper接口

使用注解的方式相比于使用 .xml更为简洁,不用配置 .xml

2、基本功能

(1)、查询

【1】、xml方式

查询标签<select>,用来执行数据库的查询操作的。

  • id:和接口中定义的方法名称相同,表示对接口的具体实现方法。
  • resultType:返回的数据类型,也就是定义的实体类。

【2】、注解方式

查询注解@Select,用来执行数据库的查询操作。

(2)、修改

【1】、xml方式

修改标签<update>,用来执行数据库的修改操作的。

【2】、注解方式

修改注解@Update,用来执行数据库的修改操作。

(3)、删除

【1】、xml方式

删除标签<delete>,用来执行数据库的删除操作的。

【2】、注解方式

删除注解@Delete,用来执行数据库的删除操作。

(4)、增加

【1】、xml方式

插入标签<insert>,用来执行数据库的插入操作的。

  • useGeneratedKeys:使 MyBatis 使用 JDBC 的 getGeneratedKeys 方法取出由数据库内部生成的主键,默认值为false。
  • keyColumn:设置生成键值在表中的列名,在某些数据库中当主键列不是表中的第一列时必须设置。如果生成列不止一个,可以用逗号分隔多个属性名称。
  • keyProperty:指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值。如果生成列不止一个,可以用逗号分隔多个属性名称。

【2】、注解方式

插入注解@Insert,用来执行数据库的插入操作。

3、"#{}" 和 "${}" 区别

  • #{}:预编译处理。是预编译执行模式,执行时安全,不存在sql注入的问题。
  • ${}:字符直接替换。是即时执行模式,直接替换,执行时不安全,存在sql注入的问题。其适用于需要传递sql命令的业务,且查询结果需要能被穷举。

4、返回字典映射 resultMap

(1)、处理字段名和属性名不同

数据库中字段名称和程序中的属性名不同时,可以使用 resultMap 配置映射。

  • type:要映射的实体类
  • id:数据库主键名
  • result:数据库普通字段和属性
  • column:数据库字段名
  • property:类中的属性名

(2)、一对一或一对多关系可以使用 resultMap 映射并查询数据

五、动态SQL

1、<if>标签

注册有必填和非必填两种字段。在添加用户有不确定的字段传入时,就需要使用动态标签 <if> 来判断。

2、<trim>标签

如果插入时所有字段都是非必填项,就需要结合<trim>标签和<if>标签来使用,对多个字段都采取动态生成的方式。

<trim>标签属性:

  • prefix:表示整个语句块,以prefix的值作为前缀
  • suffix:表示整个语句块,以suffix的值作为后缀
  • prefixOverrides:表示整个语句块要去除掉的前缀
  • suffixOverrides:表示整个语句块要去除掉的后缀

3、<where>标签

传入的用户对象根据属性做 where 条件查询,用户对象中属性不为 null 时,都为查询条件。

对于<where>标签也可以使用 <trim prefix="where" prefixOverrides="and"> 进行替换

4、<set>标签

根据传入的用户对象属性来更新用户数据时,可以使用<set>标签来指定动态内容。

对于<set>标签也可以使用 <trim prefix="set" suffixOverrides=","> 进行替换。

5、<foreach>标签

对集合进行遍历时可以使用<foreach>标签进行统一删除。

<foreach>标签有如下属性:

  • collection:绑定方法参数中的集合,如 List、Set、Map或数组对象
  • item:遍历时的每一个对象
  • open:语句块开头的字符串
  • close:语句块结束的字符串
  • separator:每次遍历之间间隔的字符串

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值