Mybatis
- MyBatis:一款优秀的持久层框架,用于简化JDBC的开发
-
Mybatis入门
- 使用Mybatis查询所有用户的数据
- 准备工作(创建springboot工程,数据库表user,实体类User)


- 引入Mybatis的相关依赖,配置Mybatis(数据库连接信息),因为用springboot整合mybatis,因此要配置配置文件

mybatis依赖和mysql驱动包 - 编写SQL语句(注解/XML)

在mybatis里只需要完成mapper接口,不用关心实现类,程序会自动帮助完成实现类
- 准备工作(创建springboot工程,数据库表user,实体类User)
- JDBC介绍:使用java语言操作关系型数据库的一套API,sun公司定义的一套操作所有关系型数据库的规范即接口,各个厂商可以实现这套接口提供数据库驱动jar包,外面可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
- 缺点:硬编码;反复关闭打开,资源浪费,性能降低;操作繁琐;
- 操作流程:1.注册驱动 2.获取连接对象,与哪个数据库连接 3.获取SQL的对象statemnet,执行SQL,返回结果 4.封装结果数据5.释放资源
- 数据库连接池:是容器,负责分配、管理数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个,释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接一楼问题。


- lombok:一个实用的java类库,能通过注解的形式自动生成构造器,getter、setter等,并可以自动化生成日志变量,简化java开发,提高效率。
- 需要在pom.xml中添加lombok的依赖

- 使用Mybatis查询所有用户的数据
-
Mybatis基础操作
快捷键:选中实体类中的成员变量,按住ctrl+shift+逗号,可以直接完成构造,alt+insert:可选各种构造
sout:system.out.println的快捷形式
注意:LocalDate包含年月日,LocalDateTime还包括时分秒

为了动态的删除某个id,可以像图片中一样,运用#{}获取传入的id,如果mapper接口里的方法形参只有一个普通类型的参数的话,#{}里的属性名可以随意写,因为不会产生歧义

- 删除:值得注意的是,删除操作是有返回值的,它的返回值是此次操作影响的记录数。装饰器@Delete
- 日志输出:在mybatis里不能直观地看到操作结果,因此我们可以配置日志输出,由此来看到程序过程、结果。在properties里配置日志信息,并输出到控制台。

- 预编译SQL的优势:性能更高

- 插入:@Insert
- 在插入同时获取主键:@Option(keyProperty="id",useGeneratedKeys=true),加上这条注解,会自动将生成的主键值,赋值给emp对象的id属性。
- 更新:@Update
- 查询:@Select,查询的时候要求参数名称全部对应,为了简化操作,1:我们可以给变量起别名 2:通过@Results,手动映射封装

只需要手动映射属性名与字段名不一致的就可以了。
3:开启mybatis的驼峰命名自动映射开关 --- a_colum---> aColum,需要在properties里配置- 注意:在进行模糊查询写接口时,不能用'%#{}%',应该用'%${}%',但是这样会导致性能低,不安全存在SQL注入的问题,可以通过concat(字符拼接函数)解决,concat('%',#{},'%')
-
XML映射文件
xml文件是有约束的,我们需要去官方拷贝,mybatis中文网。,拷贝完之后添加mapper标签即可

全限定名称选中接口右键复制reference即可resulttype是单条数据的返回类型!!!
在mapper接口中选中语句按住alt+enter可以快速创建映射!
-
mybatis插件,提高效率
-
动态SQL
- if:用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。

- foreach:collection:要遍历的集合,item:遍历出来的元素,separator:分隔符,open:遍历开始前拼接的SQL片段,close:遍历结束后拼接的SQL片段。

- sql:抽取sql片段,并利用include指定包含的sql片段

- where:判断其中的语句是否有实现,有则产生where,没有则不产生,并且动态删除多余的and
- set:去除多余逗号
- if:用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。
-

浙公网安备 33010602011771号