资讯专栏INFORMATION COLUMN

Spring Boot2(一):使用Spring Boot2集成Mybatis基础搭建

TANKING / 1121人阅读

摘要:主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。新建项目默认为,直接改为,另外新增一个用户不同环境使用不同的配置文件用。配置指定配置文件为配置开启驼峰命名转换,如。

仓库地址:spring-boot-learning
欢迎star、fork,给作者一些鼓励

前言

Mybatis 初期使用比较麻烦,需要各种配置文件、实体类、Dao 层映射关联、还有一大推其它配置。mybatis-spring-boot-starter 就是 Spring Boot+ Mybatis 可以完全注解不用配置文件,也可以简单配置轻松上手。

mybatis-spring-boot-starter

官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot
其实就是 Mybatis 看 Spring Boot 这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。

当然任何模式都需要首先引入mybatis-spring-boot-starter的 Pom 文件,现在最新版本是 2.0.1

</>复制代码

  1. org.mybatis.spring.boot
  2. mybatis-spring-boot-starter
  3. 2.0.1

我一般使用的是XML极简模式,可能是由于之前用的hibernate用习惯了

极简 xml 版本

极简 xml 版本保持映射文件的老传统,接口层只需要定义空方法,系统会自动根据方法名在映射文件中找对应的 Sql .

1 添加相关 Maven 文件

</>复制代码

  1. org.mybatis.spring.boot
  2. mybatis-spring-boot-starter
  3. 2.0.1
  4. mysql
  5. mysql-connector-java
  6. runtime
  7. org.projectlombok
  8. lombok
  9. true
  10. org.springframework.boot
  11. spring-boot-starter-test
  12. test

完整的 Pom 包这里就不贴了,大家直接看源码

2、application.yml相关配置

推荐使用application.yml进行配置,其实使用application.yml或者application.properties都是一样的效果,application.yml最终是转换为application.properties进行生效的,只不过application.yml视觉效果看起来更加明了。新建项目默认为application.properties,直接改为application.yml,另外新增一个application-test.yml用户不同环境使用不同的配置文件用。

application.yml配置:

</>复制代码

  1. #指定配置文件为test
  2. spring:
  3. profiles:
  4. active: test
  5. #配置Mybatis
  6. mybatis:
  7. type-aliases-package: com.niaobulashi.entity
  8. mapper-locations: classpath:mapper/*.xml
  9. configuration:
  10. # 开启驼峰命名转换,如:Table(create_time) -> Entity(createTime)。不需要我们关心怎么进行字段匹配,mybatis会自动识别`大写字母与下划线`
  11. map-underscore-to-camel-case: true
  12. #打印SQL日志
  13. logging:
  14. level:
  15. com.niaobulashi.dao: DEBUG

application-test.yml配置:

</>复制代码

  1. spring:
  2. datasource:
  3. url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
  4. username: root
  5. password: root
  6. driver-class-name: com.mysql.cj.jdbc.Driver

Spring Boot 会自动加载 spring.datasource.* 相关配置,数据源就会自动注入到 sqlSessionFactory 中,sqlSessionFactory 会自动注入到 Mapper 中,对了,你一切都不用管了,直接拿起来使用就行了。

在启动类中添加对 mapper 包扫描@MapperScan

</>复制代码

  1. @SpringBootApplication
  2. @MapperScan("com.niaobulashi.dao")
  3. public class MybatisApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(MybatisApplication.class, args);
  6. }
  7. }

或者直接在 Mapper 类上面添加注解@Mapper,建议使用上面那种,不然每个 mapper 加个注解也挺麻烦的

3、添加 User 的实例

</>复制代码

  1. @Data
  2. public class SysUserEntity implements Serializable {
  3. private static final long serialVersionUID = 1L;
  4. //用户ID
  5. private Long userId;
  6. //用户名
  7. private String username;
  8. //密码
  9. private String password;
  10. //盐
  11. private String salt;
  12. //邮箱
  13. private String email;
  14. //手机号
  15. private String mobile;
  16. //状态 0:禁用 1:正常
  17. private Integer status;
  18. //创建时间
  19. private Date createTime;
  20. }
4、添加 User 的映射文件

</>复制代码

其实就是把上个版本中 Mapper 的 Sql 搬到了这里的 xml 中了

5、编写 Mapper 层的代码

</>复制代码

  1. public interface SysUserDao {
  2. /**
  3. * 根据userId查询用户信息
  4. * @param userId 用户ID
  5. */
  6. List queryUserInfo(Long userId);
  7. }
6、编写Service层的代码

SysUserService接口类:

</>复制代码

  1. public interface SysUserService {
  2. /**
  3. * 查询用户的所有菜单ID
  4. */
  5. List queryUserInfo(Long userId);
  6. }

SysUserServiceImpl实现类:

</>复制代码

  1. @Service("sysUserService")
  2. public class SysUserServiceImpl implements SysUserService {
  3. @Resource
  4. private SysUserDao sysUserDao;
  5. /**
  6. * 查询用户的所有菜单ID
  7. * @param userId
  8. * @return
  9. */
  10. @Override
  11. public List queryUserInfo(Long userId) {
  12. return sysUserDao.queryUserInfo(userId);
  13. }
  14. }
7、测试

经过上面5个步骤就可以完成基本的接口开发,省去了Controller层的开发

</>复制代码

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. public class MabatisTest {
  4. private final static Logger logger = LoggerFactory.getLogger(MabatisTest.class);
  5. @Autowired
  6. private SysUserService sysUserService;
  7. @Test
  8. public void queryUserInfo() throws Exception {
  9. SysUserEntity userEntity = new SysUserEntity();
  10. userEntity.setUserId(1L);
  11. List list = sysUserService.queryUserInfo(userEntity.getUserId());
  12. logger.info("list:" + list);
  13. }
  14. }
最后项目目录结构

总结

SpringBoot和Mybatis这对CP,完美

示例代码-github

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75491.html

相关文章

  • Spring Boot2(二):使用Spring Boot2集成Mybatis缓存机制

    摘要:本文章的源码再文章末尾什么是查询缓存有一级缓存和二级缓存。默认开启一级缓存。证明了一级缓存只是在数据库会话内部共享的。但是,整合到中后,一级缓存就会被关闭。根据时间表比如没有刷新间隔缓存不会以任何时间顺序来刷新。 仓库地址:spring-boot-learning欢迎star、fork,给作者一些鼓励 学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机...

    mikasa 评论0 收藏0
  • Spring Boot2(二):使用Spring Boot2集成Mybatis缓存机制

    摘要:本文章的源码再文章末尾什么是查询缓存有一级缓存和二级缓存。默认开启一级缓存。证明了一级缓存只是在数据库会话内部共享的。但是,整合到中后,一级缓存就会被关闭。根据时间表比如没有刷新间隔缓存不会以任何时间顺序来刷新。 仓库地址:spring-boot-learning欢迎star、fork,给作者一些鼓励 学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机...

    NSFish 评论0 收藏0
  • Spring Boot2(三):使用Spring Boot2集成Redis缓存

    摘要:本文章的源码再文章末尾什么是查询缓存有一级缓存和二级缓存。默认开启一级缓存。证明了一级缓存只是在数据库会话内部共享的。但是,整合到中后,一级缓存就会被关闭。根据时间表比如没有刷新间隔缓存不会以任何时间顺序来刷新。 学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机制,在部署的时候踩过了一些坑。在此记录和分享一下Mybatis的缓存作用。 本文章的源码再...

    NusterCache 评论0 收藏0

发表评论

0条评论

TANKING

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<