一步一步搭建springboot+mybatis+jta框架
来源:互联网 发布:linux 调试动态库 编辑:程序博客网 时间:2024/06/07 17:50
0. 项目目录一览图:
1. 导入项目需要的jar包,如下:
<dependencies> <!--fastjson json库--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <!-- Apache工具组件 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons-lang3.version}</version> </dependency> <dependency> <groupId>com.xiaoleilu</groupId> <artifactId>hutool-all</artifactId> <version>${hutool-all.version}</version> </dependency> <!--lombok jar--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!--springmvc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--数据库操作 start--> <!--使用mysql数据库,导入mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--使用阿里的Druid连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- mybatis start --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot-starter.version}</version> </dependency> <!--分布式事务支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jta-atomikos</artifactId> </dependency> <!--数据库操作 end--> <!--使用actuator监控spring boot各种指标,需要打开指标对应的开关--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
2. 配置数据源属性文件(这里配置两个,分别为car,test)
# car数据源配置spring.datasource.car.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.car.driverClassName=com.mysql.jdbc.Driverspring.datasource.car.url=jdbc:mysql://ip:3306/db_electric_car?useUnicode=true&characterEncoding=utf8&useSSL=falsespring.datasource.car.username=rootspring.datasource.car.password=123456spring.datasource.car.initialSize=5spring.datasource.car.minIdle=5spring.datasource.car.maxActive=20spring.datasource.car.maxWait=60000spring.datasource.car.timeBetweenEvictionRunsMillis=60000spring.datasource.car.minEvictableIdleTimeMillis=300000spring.datasource.car.validationQuery=SELECT 1 FROM DUALspring.datasource.car.testWhileIdle=truespring.datasource.car.testOnBorrow=falsespring.datasource.car.testOnReturn=falsespring.datasource.car.poolPreparedStatements=truespring.datasource.car.maxPoolPreparedStatementPerConnectionSize=20spring.datasource.car.filters=stat,wall,log4jspring.datasource.car.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# test数据源配置spring.datasource.test.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.test.driverClassName=com.mysql.jdbc.Driverspring.datasource.test.url=jdbc:mysql://ip:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=falsespring.datasource.test.username=rootspring.datasource.test.password=123456spring.datasource.test.initialSize=5spring.datasource.test.minIdle=5spring.datasource.test.maxActive=20spring.datasource.test.maxWait=60000spring.datasource.test.timeBetweenEvictionRunsMillis=60000spring.datasource.test.minEvictableIdleTimeMillis=300000spring.datasource.test.validationQuery=SELECT 1 FROM DUALspring.datasource.test.testWhileIdle=truespring.datasource.test.testOnBorrow=falsespring.datasource.test.testOnReturn=falsespring.datasource.test.poolPreparedStatements=truespring.datasource.test.maxPoolPreparedStatementPerConnectionSize=20spring.datasource.test.filters=stat,wall,log4jspring.datasource.test.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
3. 将数据源配置映射到对象中
- car属性
@Component //自动注入 @ConfigurationProperties(prefix = "spring.datasource.car") @Data // lombok注解,生成getter/setter等方法 public class DataSourceCarProperties { private String type; private String driverClassName; private String url; private String username; private String password; private int initialSize; private int minIdle; private int maxActive; private int maxWait; private int timeBetweenEvictionRunsMillis; private int minEvictableIdleTimeMillis; private String validationQuery; private boolean testWhileIdle; private boolean testOnBorrow; private boolean testOnReturn; private boolean poolPreparedStatements; private int maxPoolPreparedStatementPerConnectionSize; private String filters; private String connectionProperties; }
test属性
@Component //自动注入 @ConfigurationProperties(prefix = "spring.datasource.test") @Data public class DataSourceTestProperties { private String type; private String driverClassName; private String url; private String username; private String password; private int initialSize; private int minIdle; private int maxActive; private int maxWait; private int timeBetweenEvictionRunsMillis; private int minEvictableIdleTimeMillis; private String validationQuery; private boolean testWhileIdle; private boolean testOnBorrow; private boolean testOnReturn; private boolean poolPreparedStatements; private int maxPoolPreparedStatementPerConnectionSize; private String filters; private String connectionProperties;}
4. 配置数据源,代码如下:
- car配置
@Configuration @MapperScan(basePackages = {"com.lcj.web.mapper.car*"}, sqlSessionTemplateRef = "sqlSessionTemplateCar") // 扫描dao或mapper接口 public class DataSourceCarConfig { @Primary @Bean(name = "dataSourceCar") public DataSource dataSourceCar(DataSourceCarProperties dataSourceCarProperties){ DruidXADataSource dataSource = new DruidXADataSource(); BeanUtils.copyProperties(dataSourceCarProperties,dataSource); AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean(); xaDataSource.setXaDataSource(dataSource); xaDataSource.setUniqueResourceName("dataSourceCar"); return xaDataSource; } @Bean(name = "sqlSessionFactoryCar") public SqlSessionFactory sqlSessionFactoryCar(@Qualifier("dataSourceCar") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setTypeAliasesPackage("com.lcj.web.entity.car"); //bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/car/*Mapper.xml")); return bean.getObject(); } @Bean(name = "sqlSessionTemplateCar") public SqlSessionTemplate sqlSessionTemplateCar( @Qualifier("sqlSessionFactoryCar") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }
- test配置
@Configuration@MapperScan(basePackages = {"com.lcj.web.mapper.test*"}, sqlSessionTemplateRef = "sqlSessionTemplateTest") // 扫描dao或mapper接口public class DataSourceTestConfig { @Bean(name = "dataSourceTest") public DataSource dataSourceTest(DataSourceTestProperties dataSourceTestProperties){ DruidXADataSource dataSource = new DruidXADataSource(); BeanUtils.copyProperties(dataSourceTestProperties,dataSource); AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean(); xaDataSource.setXaDataSource(dataSource); xaDataSource.setUniqueResourceName("dataSourceTest"); return xaDataSource; } @Bean(name = "sqlSessionFactoryTest") public SqlSessionFactory sqlSessionFactoryTest(@Qualifier("dataSourceTest") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setTypeAliasesPackage("com.lcj.web.entity.test"); //bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapper/test/*Mapper.xml")); return bean.getObject(); } @Bean(name = "sqlSessionTemplateTest") public SqlSessionTemplate sqlSessionTemplateTest( @Qualifier("sqlSessionFactoryTest") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); }}
5. 配置分布式事务,代码如下:
@Configuration@EnableTransactionManagementpublic class XATransactionManagerConfig { @Bean(name = "userTransaction") public UserTransaction userTransaction() throws Throwable { UserTransactionImp userTransactionImp = new UserTransactionImp(); userTransactionImp.setTransactionTimeout(10000); return userTransactionImp; } @Bean(name = "atomikosTransactionManager", initMethod = "init", destroyMethod = "close") public TransactionManager atomikosTransactionManager() throws Throwable { UserTransactionManager userTransactionManager = new UserTransactionManager(); userTransactionManager.setForceShutdown(false); return userTransactionManager; } @Bean(name = "transactionManager") @DependsOn({ "userTransaction", "atomikosTransactionManager" }) public PlatformTransactionManager transactionManager() throws Throwable { return new JtaTransactionManager(userTransaction(),atomikosTransactionManager()); }}
6. 整个项目使用到的技术如下:
- spring boot 1.5.6
- mybatis
- mysql
- druid连接池
- jta分布式事务
- lombok
7. 数据库文件放在entity目录下,其他问题请联系我.
8. 项目源码地址: https://gitee.com/liuchangng/springboot-mybatis-jta
阅读全文
0 0
- 一步一步搭建springboot+mybatis+jta框架
- 【Mybatis学习】利用SpringBoot搭建SSM框架
- 初次搭建ssm(springboot+springMvc+Mybatis)框架实践之路
- springboot+mybatis搭建
- SpringBoot集成MyBatis框架
- SpringBoot+Mybatis框架Demo
- springboot+mybatis+shiro框架
- SSH框架一步一步搭建
- Spring+SpringMVC+Mybatis 一步一步搭建
- 学习搭建springboot框架
- springboot 框架搭建
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
- 搭建SpringBoot-MyBatis-MyBatisGenerator项目
- 排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障
- xilinx SDI 技术
- 你“球”不如她,球技更不如她!
- 顺序表应用6:有序顺序表查询
- SUSE配置zypper
- 一步一步搭建springboot+mybatis+jta框架
- jq实现点击空白处,指定元素消失,且指定元素内部事件不受影响
- HTML5视频直播及H5直播扫盲
- JavaScript中的函数参数传递
- LeetCode 135. Candy--贪心算法
- 数据结构之单链表——C++模板类实现
- python 中 包的下载地址
- Java_HttpRequest方法
- HashSet HashTable HashMap的区别 及其Java集合介绍