目前暂整理这两种方式,亲测可用
一、注解的方式
1、引入依赖
在pom文件中引入 mybaits-spring-boot-starter的依赖:

<!--mybatis 依赖-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.0</version>
</dependency><!--mysql 依赖-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.5</version>
</dependency><!--druid数据源依赖-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.29</version>
</dependency>

2、在application.properties配置文件中引入数据源 (不配数据连接池的情况下)

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/user_boot?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

3、dao层

package com.lbh.dao;import com.lbh.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;import java.util.List;/**
* Created by Advancer on 2018/1/19 10:52.
* auth: lbh
*/
@Mapper
@Component
public interface UserDao {@Insert("INSERT INTO user(name, age, money) VALUES(#{name}, #{age}, #{money})")public int addUser(@Param("name") String name, @Param("age") String age, @Param("money") double money);@Update("UPDATE user SET name = #{name}, age = #{age}, money = #{money} WHERE id = #{id}")public int updUser(@Param("name") String name, @Param("age") String age, @Param("money") double money, @Param("id") int id);@Delete("DELETE FROM user WHERE id = #{id}")public int delUser(@Param("id") int id);/*** 与@Select 注解并用的注解还有一个 @Result,* @Restle:修饰返回的结果集,关联实体类属性与字段一一对应,如果实体类属性与字段名字保持一致,则不需要此属性也可以。* @return*/@Select("SELECT id, name, age, money FROM user")public List<User> findAllUser();@Select("SELECT id, name, age, money FROM user WHERE id = #{id}")public User findUserById(@Param("id") int id);}

4、Service层

package com.lbh.service;import com.lbh.dao.UserDao;
import com.lbh.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.List;/**
* Created by Advancer on 2018/1/19 10:59.
* auth: lbh
*/
@Service
public class UserService {@Autowiredprivate UserDao userDao;/*** 新增一条记录* @param name* @param age* @param money* @return*/@Transactional(rollbackFor = Exception.class)public int addUser(String name, String age, double money){return userDao.addUser(name, age, money);}//。。。。
}

5、Controller层

package com.lbh.controller;import com.lbh.entity.User;
import com.lbh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** Created by Advancer on 2018/1/19 11:03.* auth: lbh*/@RestController@RequestMapping("/user")public class UserController {@Autowiredprivate UserService userService;@RequestMapping(value = "/addUser", method = RequestMethod.GET)public String addUser(@RequestParam("name") String name,@RequestParam("age") String age,@RequestParam("money") double money){int flag = userService.addUser(name, age, money);if (flag == 1){return "success";}else {return "fail";}
}

6、使用postman测试

二、配置文件的方式(可支持多数据源)
1、首先还是引入先关依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent><properties><jdk.version>1.8</jdk.version><mybatis-spring-boot>1.2.0</mybatis-spring-boot><mysql-connector>5.1.39</mysql-connector><druid>1.0.18</druid><ojdbc.version>11.2.0.3</ojdbc.version><junit.version>4.12</junit.version>
</properties><dependencies><!-- Spring Boot Web 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Mybatis 依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-spring-boot}</version></dependency><dependency><groupId>oracle</groupId><artifactId>ojdbc6</artifactId><version>${ojdbc.version}</version><scope>system</scope><systemPath>${project.basedir}/lib/ojdbc6-11.2.0.3.jar</systemPath></dependency><!-- Druid 数据连接池依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid}</version></dependency><!-- Junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jta-atomikos</artifactId></dependency>
</dependencies>

2、application.yml

server:port: 8989context-path: /Boot###############数据源###################
advancer:datasource:driverClassName: oracle.jdbc.driver.OracleDriverurl: jdbc:oracle:thin:@localhost:1521/choiceusername: choiceallpassword: choicealltype: com.alibaba.druid.pool.DruidDataSourceinitialSize: 5minIdle: 5maxActive: 20maxIdle: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000removeAbandonedTimeout: 60removeAbandoned: truevalidationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: truetestOnReturn: falsepoolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20filters: stat,wall,log4jconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

3、配置文件(数据源 关联 mybatis 文件)

package com.lbh.config;import com.alibaba.druid.pool.xa.DruidXADataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;/**
* Created by Advancer on 2018/1/23 10:42.
* auth: lbh
*/
@Configuration
@MapperScan(basePackages = AdvancerDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "advancerSqlSessionFactory")
public class AdvancerDataSourceConfig {//精确到具体目录static final String PACKAGE = "com.lbh.dao";static final String MAPPER_LOCATION = "classpath:mapper/*.xml";@Value("${advancer.datasource.driverClassName}")private String driverClass;@Value("${advancer.datasource.url}")private String url;@Value("${advancer.datasource.username}")private String userName;@Value("${advancer.datasource.password}")private String password;@Bean("advancerDataSource")@Primarypublic DataSource advancerDataSource(){DruidXADataSource dataSource = new DruidXADataSource();dataSource.setDriverClassName(driverClass);dataSource.setUrl(url);dataSource.setUsername(userName);dataSource.setPassword(password);AtomikosDataSourceBean xaDatasource = new AtomikosDataSourceBean();xaDatasource.setUniqueResourceName("advancerDataSource");xaDatasource.setXaDataSource(dataSource);return xaDatasource;}@Bean(name = "advancerSqlSessionFactory")@Primarypublic SqlSessionFactory advancerSqlSessionFactory(@Qualifier("advancerDataSource") DataSource advancerdataSource)                         throws Exception {SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(advancerdataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(AdvancerDataSourceConfig.MAPPER_LOCATION));return sessionFactory.getObject();}}

事务控制

package com.lbh.config;import com.atomikos.icatch.jta.UserTransactionImp;
import com.atomikos.icatch.jta.UserTransactionManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.jta.JtaTransactionManager;import javax.transaction.SystemException;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;/**
* Created by Advancer on 2018/1/23 13:15.
* auth: lbh
*/
@Configuration
@ComponentScan
@EnableTransactionManagement
public class TransactionManagerConfig {@Bean(name = "userTransaction")public UserTransaction userTransaction() throws SystemException {UserTransactionImp userTransactionImp = new UserTransactionImp();userTransactionImp.setTransactionTimeout(30);return userTransactionImp;}@Bean(name = "atomikosTransactionManager", initMethod = "init", destroyMethod = "close")public TransactionManager atomikosTransactionManager(){UserTransactionManager userTransactionManager = new UserTransactionManager();userTransactionManager.setForceShutdown(false);return userTransactionManager;}@Bean(name = "transactionManager")@DependsOn({"userTransaction", "atomikosTransactionManager"})public PlatformTransactionManager transactionManager() throws SystemException {UserTransaction userTransaction = userTransaction();JtaTransactionManager manager = new JtaTransactionManager(userTransaction,atomikosTransactionManager());return manager;}}

4、dao层

@Mapper
public interface UserDao {/*** 新增* @param user* @return*/public void addUser(User user);/*** 查询* @return*/public List<User> findAllUser();}
<insert id="addUser" parameterType="com.lbh.entity.User">INSERT INTO user_boot (id, name, age, money)VALUES (seq_user_id.NEXTVAL, #{name}, #{age}, #{money})
</insert><select id="findAllUser" resultType="com.lbh.entity.User">SELECT id, name, age, moneyFROM user_boot
</select>

5、service层

  @Autowiredprivate UserDao userDao;public void addUser(){User user = new User("lbh", "24", 10000);userDao.addUser(user);}public List<User> findAllUser(){return userDao.findAllUser();}

6、controller层

   @Autowiredprivate UserService userService;@RequestMapping("/addUser")public void addUser(){userService.addUser();}@RequestMapping("/findUser")public List<User> findUser(){List<User> userList = userService.findAllUser();for (User user : userList) {System.out.println(user);}return userList;}

结果:

Spring boot(四):整合Mybatis相关推荐

  1. Spring Boot入门系列(六)Spring Boot如何整合Mybatis【附详细步骤】

    前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...

  2. Spring Boot中使用MyBatis注解配置详解

    之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...

  3. Spring Boot:实现MyBatis分页

    综合概述 想必大家都有过这样的体验,在使用Mybatis时,最头痛的就是写分页了,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真的不想花双倍 ...

  4. Spring Boot(七):Mybatis 多数据源最简解决方案

    Spring Boot(七):Mybatis 多数据源最简解决方案 参考文章: (1)Spring Boot(七):Mybatis 多数据源最简解决方案 (2)https://www.cnblogs. ...

  5. spring boot 学习(二)spring boot 框架整合 thymeleaf

    spring boot 框架整合 thymeleaf spring boot 的官方文档中建议开发者使用模板引擎,避免使用 JSP.因为若一定要使用 JSP 将无法使用. 注意:本文主要参考学习了大神 ...

  6. Spring Boot项目利用MyBatis Generator进行数据层代码自动生成

    概 述 MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器.它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ...

  7. 关于Spring Boot WebSocket整合以及nginx配置详解

    这篇文章主要给大家介绍了关于Spring Boot WebSocket整合以及nginx配置的相关资料,文中通过示例代码给大家介绍的非常详细,相信对大家的学习或者工作具有一定的参考学习价值,需要的朋友 ...

  8. Spring Boot 应用系列 5 -- Spring Boot 2 整合logback

    上一篇我们梳理了Spring Boot 2 整合log4j2的配置过程,其中讲到了Spring Boot 2原装适配logback,并且在非异步环境下logback和log4j2的性能差别不大,所以对 ...

  9. spring boot(四):thymeleaf使用详解

    spring boot(四):thymeleaf使用详解 在上篇文章springboot(二):web综合开发中简单介绍了一下thymeleaf,这篇文章将更加全面详细的介绍thymeleaf的使用. ...

  10. Kotlin 企业级应用开发教程(Spring 5 + Spring Boot 2.0 + MyBatis)

    Kotlin 企业级应用开发教程 -- Spring 5 + Spring Boot 2.0 + MyBatis 内容简介 Kotlin编程语言是一种现代语言,它简洁,安全,实用,同时专注于与Java ...

最新文章

  1. 零基础学python培训需要学习多久?
  2. tf之get_Variable()
  3. 文件哈希审计工具md5deep/hashdeep
  4. JS JavaScript模块化(ES Module/CommonJS/AMD/CMD)
  5. 售前常见问题解答(一)
  6. 10 个平板电脑上的 Python 编辑器
  7. 设置input标签禁用_Vue造轮子 | input组件
  8. python雪花算法生成id_理解分布式id生成算法SnowFlake
  9. 他35k月薪,如何扛住redis面试!
  10. jre放到Tomcat目录并指定使用此jre的方法
  11. android_dialog_2
  12. 32位的tetview and medit 在64bit的linux运行,有很多32bit的库没有安装,错误不断之解决办法。
  13. 类 ACDSee图像浏览工具Lyn for Mac
  14. @value 默认值_【Spring】只想用一篇文章记录@Value的使用,不想再找其它了(附思维导图)
  15. Android so库动态加载总结
  16. 【渝粤教育】电大中专常见病药物治疗_1作业 题库
  17. 国内三大B2C网站首页的信息架构【收集整理,本人非原作者】
  18. canvas坐标转换屏幕坐标_Canvas坐标系转换
  19. 微信公众号开发002-微信网页授权
  20. python的idel下添加清屏功能

热门文章

  1. 泰山OFFICE技术讲座:微软雅黑字体故意设置的坑,粗体错误
  2. Lucas-Kanade 算法原理以及应用
  3. tf.expand_dims - 增加维度
  4. backtrack渗透测试中常用的命令总结
  5. 百度快照不更新是什么原因导致的
  6. [SCOI2009]粉刷匠 两个dp
  7. Sue 的小球 ball
  8. Mantis 安装与配置及使用
  9. 微客侠:解决微信内直接打开淘宝链接
  10. 企业局域网无线组网方案