Mybatis学习(2)

分页

目的:减少数据的处理量

方式一:使用limit实现分页,核心SQL

sql语法:select * from user limit startIndex,pageSize;

步骤:

1、接口

2、Mapper.xml

3、测试

方式二:使用注解开发 

1、注解在接口上实现

 Mybatis详细的执行流程

方法存在多个参数,所有的参数前面必须加上@Param(“id”)注解

  • 基本类型的参数或String类型,需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的话,可以忽略,但是建议大家都加上
  • 我们在SQL中引用的就是我们这里的@Param(“id”)中设定的属性名

 可以在工具类(utils)创建的时候实现自动提交事务

 Lombok

偷懒省事!

1、在IDEA中安装Lombok插件(后来版本自带)

2、在项目中导入lombok的jar包

3、在实体类上加注解即可!

@Data:无参构造、get、set、toString、hashcode、equals

@AllArgsConstructor:有参构造

@NoArgsConstructor:无参构造

多对一处理

多个学生,对应一个老师

对于学生而言【多对一】:关联

对于老师而言【一对多】:集合

测试环境搭建

1、导入lombok

2、新建实体类Teacher、Student

3、建立Mapper接口

4、建立Mapper.xml文件

5、在核心配置文件中绑定注册我们的Mapper接口或者文件(多种方法)

6、测试查询是否能够成功

按照结果嵌套处理(联表查询)

按照查询嵌套处理(子查询)

 

 一对多处理

对于老师而言,就是一对多的关系

按照结果嵌套处理

按照查询嵌套处理

 小结

1、关联-association【多对一】

2、集合-collection【一对多】

3、javaType  &  ofType

    ①javaType用来指定实体类中属性的类型

    ②ofType用来指定映射到List或者集合中的pojo类型,泛型中的约束类型!

动态SQL 

  • 根据不同的条件生成不同的SQL语句
  • 所谓的动态SQL,本质还是SQL语句,只是我们可以在SQL的层面,去执行一个逻辑代码
  • 动态SQL就是在拼接SQL语句

创建一个基础工程

1、导包

2、编写配置文件

3、编写实体类

4、编写实体类对应Mapper接口和Mapper.xml文件

if

choose(when,otherwise)

trim(where,set)

 

foreach

SQL片段

有的时候,我们可能会将一些功能的部分抽取出来,方便复用!

1、使用SQL标签抽取公共的部分

2、在需要使用的地方使用Include标签引用即可

缓存

一级缓存

  • 一级缓存也叫本地缓存:SqlSession级别
  • 与数据库同一次会话期间查询到的数据会放在本地缓存中
  • 以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库

缓存失效的情况:

1、查询不同的东西

2、增删改操作,可能会改变与原来的数据,所以必定会刷新缓存!

3、查询不同的Mapper.xml

4、手动清理缓存!sqlSession.clearCache();

小结:一级缓存是默认开启的,只在一次SqlSession中有效,也就是拿到连接到关闭连接这个区间段!

二级缓存 

步骤:

1、开启全局缓存

2、在要使用二级缓存的Mapper中开启,也可以自定义参数

3、测试

遇到的问题:需要将实体类序列化,不然会报错!

小结:

  • 只要开启了二级缓存,在同一个Mapper下就有效
  • 所有数据都会先放在一级缓存中
  • 只有当会话提交,或者关闭的时候,才会提交到二级缓存中!

 缓存原理

缓存顺序:

1、先看二级缓存中有没有

2、再看一级缓存中有没有

3、都没有再查询数据库

 

自定义缓存(ehcache) 

是一种开源Java分布式缓存

步骤:

1、导包

2、在mapper中指定用ehcache缓存

3、ehcache.xml

  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值