springboot配置Mybatis流程
1. 引入依赖,在gradle中添加
mybatis-spring-boot-starter
2. 配置datasource
@Bean
public DruidDataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
//初始化
return dataSource;
}
mybatis:
//其路径是mybatis的xml文件所在路径
mapper-locations: classpath:mapper/*.xml
//namespace对应着mybatis的接口位置
<mapper namespace="com.dullbird.demo.mybaits.mapper.UserBaseInfoMapper">
<resultMap id="UserBaseInfoTotal" type="com.dullbird.demo.mybaits.po.UserBaseInfo">
<result column="user_id" property="userId" jdbcType="BIGINT" />
<result column="name" property="name" jdbcType="VARCHAR" />
resultMap>
<select id="listUserInfos" resultMap="UserBaseInfoTotal">
select * from user_base_info
select>
mapper>
//用于扫描mapper
@MapperScan("com.dullbird.demo.mybaits.mapper")
@Configuration
//用于开启事务
@EnableTransactionManagement
6.写测试类测试结果即可
mybatis-pageHelper:
1. 引入依赖包,由于是springboot 引入pagehelper-spring-boot-starter
2. 配置拦截器插件(注意:是在SqlSessionFactory中配置), 有两种配置方法,一种是在mybatis的主配置xml中。二、在SqlSessionFactory对象中配置。
由于我的项目没有mybatis的主配置xml,所以使用第二种
该方式没有配置成功,报错NPE,需要给对象传入配置文件,申明一个空的即可。然后又报错java.lang.RuntimeException: 在系统中发现了多个分页插件,请检查系统配置!,暂时未解决
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//如果需要往拦截器中配置参数还可以调用setProperties
Interceptor[] interceptors = {new PageInterceptor()};
//添加拦截插件
sqlSessionFactoryBean.setPlugins(interceptors);
sqlSessionFactoryBean.setDataSource(dataSource);
SqlSessionFactory sqlSessionFactory = null;
try {
sqlSessionFactory = sqlSessionFactoryBean.getObject();
} catch (Exception e) {
logger.error("=============",e);
}
return sqlSessionFactory;
}
第三种方式,直接配置,并测试可用
@Bean
public PageHelper getPageHelper() {
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("helperDialect", "mysql");
pageHelper.setProperties(properties);
return pageHelper;
}
第三种方式的application.yml配置方式,和java配置一样
pagehelper:
helperDialect: mysql
# reasonable: true
supportMethodsArguments: true
params: pageNum=pageNum;pageSize=pageSize
pagehelper:
helperDialect: mysql
//需要开启支持参数
supportMethodsArguments: true
//接收pageNum和pageSize
params: pageNum=pageNum;pageSize=pageSize
然后修改bean
public class UserBaseInfo {
private Long userId;
private String name;
//增加如下两个字段
private Integer pageNum;
private Integer pageSize;
//省略getter/setter
}
修改接口接收一个UserBaseInfo的参数,不需要显示的处理pageNum,pageSize
public interface UserBaseInfoMapper {
List listUserInfos(UserBaseInfo userBaseInfo);
}
测试代码
UserBaseInfo userBaseInfo = new UserBaseInfo();
userBaseInfo.setPageNum(1);
userBaseInfo.setPageSize(5);
System.out.println(userBaseInfoMapper.listUserInfos(userBaseInfo));
需要注意的是,利用参数的方式分页。必须开启supportMethodsArguments: true
且必须传入pageNum=pageNum;pageSize=pageSize两个参数,否则不会分页。
参考文章:
1.https://blog.csdn.net/zhoujiyu123/article/details/79786847 springboot如何继承mybatis
2.https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md mybatis分页工具