mybatis学习内容整理
配置mybatis
- 编写
mybatis-config.xml
,建立数据库连接 - 编写类方法,静态创立
sqlsessionfactory
- 编写dao接口
mapper
- 编写
mapper.xml
实现对应的mapper
接口中的sql方法 - 在
mybatis-config.xml
中关联到mapper.xml
编写接口(Mapper)
编写xml中sql语句,实现接口中方法(要使用namespace
绑定Mapper
接口,在xml中实现对应的 Mapper
中的数据库方法。id和接口中方法名要一样,确定好参数类型和返回类型,返回类型用pojo接口类表示)
测试,查看结果(事务增删改需要·commit)
可以通过map传递参数,好处是不必要把整个对象的所有属性都添加到sql语句中,选择性传入map中的参数即可
Map传递参数时,直接在sql中取出key即可:
ParameterType=“map”;
传入的参数只有一个基本类型(比如int)时,可以不声明parametertype
(可以省略不写),直接在sql语句中取就行。
模糊查询:
Java代码执行时,传递通配符% %;
Select * from mybatis.user where name like #{value};
测试:
List<user> userlist =mapper.getuserlike(“%李%”);
或者在sql拼接中使用通配符
Select * from mybatis.user where name like “%”#{value}”%”;
测试:
List<user> userlist =mapper.getuserlike(“李”);
(防止sql注入)
配置之属性优化
Mybatis默认的事务管理器是jdbc,连接池:pooled
属性(properties)
可以通过属性来实现引用配置文件
设置(setting)
类型别名(typeAliases)
为java中的·类设置一个短名字,比如com.mybatis.user
替换为user
或者通过指定好包名,在mapper.xml
中使用类名(默认实体类的首字母要小写),也可以通过在实体类上注解别名,使用别名。
其他配置
- Objectfactory
- TypeHandlers
- Plugins插件:
Mybatisplus
Mybatis-generator-core(根据数据表生成sql)
通用 Mapper
映射器(Mappers)
Mybatis-config.xml
中通过绑定dao层的mapper.xml
(实现sql)
属性名和字段名不一致:
数据库属性:id name pwd
实体bean属性:id name password
对应的属性不完全一致,查找到结果时,密码属性为null;
解决方法:
或者使用resultmap结果集映射:
日志
日志工厂:
如果一个数据库操作出现了异常,需要借助日志排错。
在mybatis-config.xml中配置日志:
Log4j:
Meaven导包;
添加log4j.properties配置文件:
Mybatis-config.xml中配置log4j,同上;
在测试中运行,可以看到日志记录
日志简单使用:
Limit分页:
Select * from user limit 0,2;
(每页两条数据,从第0个开始查)
Select * from user limit 4;
(从第0个开始,到第4个 结束)
分页实现:
通过map获取参数值,测试时通过map.put存入参数,直接通过map传入:
RowBounds分页
Mybatis分页插件—pagehelper
使用注解开发
注解增删改查
多对一处理:
关联:Association 多对一
根据学生id查出对应的信息(包括学生的老师)
方式一:按照查询嵌套处理:
测试结果:
方式二:按照结果嵌套处理:
一对多的处理
集合 collection 一对多
或者:
动态sql搭建
https://mybatis.org/mybatis-3/zh/dynamic-sql.html
缓存
一级缓存:Sqlsession
缓存失效情况:
- 查询不同的东西
- 增删改操作都会刷新缓存
二级缓存:
Mybatis.config.xml中开启全局缓存:
使用二级缓存,在mapper.xml中添加标签
把sqlsession缓存关闭后,二级缓存才会生效)