当前位置: 首页 > news >正文

spring boot集成mybatis

1.配置application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/myht?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.minPoolSize = 3
spring.datasource.maxPoolSize = 25
spring.datasource.maxLifetime = 20000
spring.datasource.borrowConnectionTimeout = 30
spring.datasource.loginTimeout = 30
spring.datasource.maintenanceInterval = 60
spring.datasource.maxIdleTime = 60
spring.datasource.testQuery =select 1
spring.datasource.autoReconnect = true
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=27800

2.配置pom文件

//mybatis

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>

//mysql驱动

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>

//分页插件
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.1</version>
</dependency>

//通用mapper
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.3.6</version>
</dependency>

 

3.编写通用Mapper

import tk.mybatis.mapper.common.Mapper;

import tk.mybatis.mapper.common.MySqlMapper;

/**
* 继承自己的Mapper
*/
public interface ApiBaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

 

4.配置mybatisconfig

import java.util.Properties;


import javax.sql.DataSource;

import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;

import com.github.pagehelper.PageHelper;

@Configuration
@EnableTransactionManagement
public class MyBatisConfig implements TransactionManagementConfigurer {

@Autowired
DataSource dataSource;

@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setTypeAliasesPackage("Echo_service.domain");//别名类,配置这个不需要写类的全路径

//分页插件
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("returnPageInfo", "check");
properties.setProperty("params", "count=countSql");
pageHelper.setProperties(properties);

//添加插件
bean.setPlugins(new Interceptor[]{pageHelper});

//设置配置参数
org.apache.ibatis.session.Configuration conf = new org.apache.ibatis.session.Configuration();
conf.setMapUnderscoreToCamelCase(true);
conf.setLogPrefix("api-cloud.");//日志信息前缀
bean.setConfiguration(conf);

//添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));//mapper文件存放路径 
return bean.getObject();
} catch (Exception e) {
throw new RuntimeException(e);
}

}


@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}

@Bean
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}

5.配置scanner

import org.springframework.context.annotation.Bean;


import org.springframework.context.annotation.Configuration;

import tk.mybatis.spring.mapper.MapperScannerConfigurer;

import java.util.Properties;

/**
* MyBatis鎵弿鎺ュ彛锛屼娇鐢ㄧ殑tk.mybatis.spring.mapper.MapperScannerConfigurer
*/
@Configuration
public class MyBatisMapperScannerConfig {

@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
mapperScannerConfigurer.setBasePackage("Echo_service.mapper");//扫描mapper接口中的路径
Properties properties = new Properties();
properties.setProperty("mappers", "Echo_service.mybatis.ApiBaseMapper");//设置通用mapper
properties.setProperty("notEmpty", "false");
properties.setProperty("IDENTITY", "MYSQL");
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}

}

 

转载于:https://www.cnblogs.com/wangjing666/p/7097545.html

相关文章:

  • Bootstrap栅格系统
  • 双主模型高可用负载均衡集群的实现(keepalived+lvs-dr)
  • Google Play商店400款App藏恶意代码:手机可变监听站
  • 10.3-全栈Java笔记:常用流详解(一)
  • 不断增长的互联网威胁正在让越来越多的美国人逃离网络
  • 云计算业务的发展对数据中心有了更高的要求
  • 周鸿祎:成功是熬出来的,像阿甘坚持到最后一分钟
  • 先之教育出席第20届AMFORHT·UNWTO发展论坛
  • 工具类app存亡观察
  • 虚拟主机更新太麻烦?不妨让它试试
  • 苹果联合创始人:我绝对反对政府获取用户数据
  • 智慧城市:引领未来可持续发展
  • 死灰复燃 Windows 10再现Android子系统
  • SOHO 3Q众包佣金上调到15% 移动办公掀热潮
  • Code Review的方式和流程
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 10个最佳ES6特性 ES7与ES8的特性
  • 30秒的PHP代码片段(1)数组 - Array
  • CSS 三角实现
  • HTTP--网络协议分层,http历史(二)
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • python_bomb----数据类型总结
  • react 代码优化(一) ——事件处理
  • SQL 难点解决:记录的引用
  • vue的全局变量和全局拦截请求器
  • vue脚手架vue-cli
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 对象引论
  • 关于springcloud Gateway中的限流
  • 后端_ThinkPHP5
  • 系统认识JavaScript正则表达式
  • 一、python与pycharm的安装
  • 优化 Vue 项目编译文件大小
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • MPAndroidChart 教程:Y轴 YAxis
  • # 透过事物看本质的能力怎么培养?
  • #14vue3生成表单并跳转到外部地址的方式
  • #include<初见C语言之指针(5)>
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (未解决)macOS matplotlib 中文是方框
  • (五)MySQL的备份及恢复
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (轉)JSON.stringify 语法实例讲解
  • ******之网络***——物理***
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net CHARTING图表控件下载地址
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)