springboot整合Mybatis或MybatisPlus注解版
DruidConfig
/**
* Druid连接池配置
*/
@Configuration
public class DruidConfig {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Bean(destroyMethod = "close", initMethod = "init")
public DruidDataSource dataSource(Environment environment) throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
/** 配置初始化大小、最小、最大*/
druidDataSource.setInitialSize(5);
druidDataSource.setMinIdle(3);
druidDataSource.setMaxActive(20);
/**配置获取连接等待超时的时间,单位是毫秒*/
druidDataSource.setMaxWait(60000);
druidDataSource.setValidationQuery("select 1 from dual");
druidDataSource.setTestWhileIdle(true);
druidDataSource.setTimeBetweenEvictionRunsMillis(60000);
druidDataSource.setMinEvictableIdleTimeMillis(300000);
druidDataSource.setFilters("stat");
return druidDataSource;
}
@Bean
public ServletRegistrationBean statViewServlet() {
StatViewServlet statViewServlet = new StatViewServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(statViewServlet,
"/druid/*");
Map<String, String> map = new HashMap();
map.put("loginUsername", "root");
map.put("loginPassword", "root");
map.put("resetEnable", "true");
registrationBean.setInitParameters(map);
return registrationBean;
}
MybatisConfig
@Configuration
@EnableTransactionManagement //开启事务
@MapperScan({"com.ls.**.dao"})
/**扫描dao*/
public class MybatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource)
throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
factoryBean.setMapperLocations(resolver.getResources("classpath*:mappers/*.xml"));
PathMatchingResourcePatternResolver resolver2 = new PathMatchingResourcePatternResolver();
//设置mybatis配置文件
factoryBean.setConfigLocation(resolver2.getResource("classpath:mybatis/mybaits_conf.xml"));
//设置驼峰配置
factoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
return factoryBean.getObject();
}
@Bean
@Primary
public SqlSessionTemplate setSqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
/**
* PageHelper分页配置
*/
@Bean
public PageHelper pageHelper() {
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("offsetAsPageNum", "true");
properties.setProperty("rowBoundsWithCount", "true");
properties.setProperty("pageSizeZero", "true");
properties.setProperty("reasonable", "true");
//配置mysql数据库的方言
properties.setProperty("dialect", "mysql");
properties.setProperty("reasonable", "true");
pageHelper.setProperties(properties);
return pageHelper;
}
/**
* 事务
*/
@Bean
@Primary
public DataSourceTransactionManager testTransactionManager(
@Qualifier("dataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
MybatisPlusConfig
@Configuration // 当前是一个java 配置类
@EnableTransactionManagement // 开启事务管理
@MapperScan(basePackages = "com.ls.dao") // mapper 扫描
public class MybatisPlusConfig {
// 2.MybatisSqlSessionFactoryBean工厂
@Bean
public SqlSessionFactory mybatisSqlSessionFactoryBean(
@Qualifier("dataSource") DataSource dataSource)
throws Exception { // 使用依赖注入的形式注入过来
MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
// 传入数据源
factory.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
factory.setMapperLocations(resolver.getResources("classpath*:mappers/*.xml"));
PathMatchingResourcePatternResolver resolver2 = new PathMatchingResourcePatternResolver();
//设置mybatis本地配置文件
factory.setConfigLocation(resolver2.getResource("classpath:mybatis/mybaits_conf.xml"));
//设置驼峰配置
factory.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
return factory.getObject();
}
@Bean
@Primary
public SqlSessionTemplate setSqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
//4. 事务管理, 开启事务使用类注解
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(
@Qualifier("dataSource") DataSource dataSource) { // 数据源依赖注入
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
return transactionManager;
}