摘要:主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。新建项目默认为,直接改为,另外新增一个用户不同环境使用不同的配置文件用。配置指定配置文件为配置开启驼峰命名转换,如。
仓库地址: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
org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1
我一般使用的是XML极简模式,可能是由于之前用的hibernate用习惯了
极简 xml 版本极简 xml 版本保持映射文件的老传统,接口层只需要定义空方法,系统会自动根据方法名在映射文件中找对应的 Sql .
1 添加相关 Maven 文件org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1 mysql mysql-connector-java runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-test 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配置:
#指定配置文件为test spring: profiles: active: test #配置Mybatis mybatis: type-aliases-package: com.niaobulashi.entity mapper-locations: classpath:mapper/*.xml configuration: # 开启驼峰命名转换,如:Table(create_time) -> Entity(createTime)。不需要我们关心怎么进行字段匹配,mybatis会自动识别`大写字母与下划线` map-underscore-to-camel-case: true #打印SQL日志 logging: level: com.niaobulashi.dao: DEBUG
application-test.yml配置:
spring: datasource: url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver
Spring Boot 会自动加载 spring.datasource.* 相关配置,数据源就会自动注入到 sqlSessionFactory 中,sqlSessionFactory 会自动注入到 Mapper 中,对了,你一切都不用管了,直接拿起来使用就行了。
在启动类中添加对 mapper 包扫描@MapperScan
@SpringBootApplication @MapperScan("com.niaobulashi.dao") public class MybatisApplication { public static void main(String[] args) { SpringApplication.run(MybatisApplication.class, args); } }
或者直接在 Mapper 类上面添加注解@Mapper,建议使用上面那种,不然每个 mapper 加个注解也挺麻烦的
3、添加 User 的实例@Data public class SysUserEntity implements Serializable { private static final long serialVersionUID = 1L; //用户ID private Long userId; //用户名 private String username; //密码 private String password; //盐 private String salt; //邮箱 private String email; //手机号 private String mobile; //状态 0:禁用 1:正常 private Integer status; //创建时间 private Date createTime; }4、添加 User 的映射文件
其实就是把上个版本中 Mapper 的 Sql 搬到了这里的 xml 中了
5、编写 Mapper 层的代码public interface SysUserDao { /** * 根据userId查询用户信息 * @param userId 用户ID */ List6、编写Service层的代码queryUserInfo(Long userId); }
SysUserService接口类:
public interface SysUserService { /** * 查询用户的所有菜单ID */ ListqueryUserInfo(Long userId); }
SysUserServiceImpl实现类:
@Service("sysUserService") public class SysUserServiceImpl implements SysUserService { @Resource private SysUserDao sysUserDao; /** * 查询用户的所有菜单ID * @param userId * @return */ @Override public List7、测试queryUserInfo(Long userId) { return sysUserDao.queryUserInfo(userId); } }
经过上面5个步骤就可以完成基本的接口开发,省去了Controller层的开发
@RunWith(SpringRunner.class) @SpringBootTest public class MabatisTest { private final static Logger logger = LoggerFactory.getLogger(MabatisTest.class); @Autowired private SysUserService sysUserService; @Test public void queryUserInfo() throws Exception { SysUserEntity userEntity = new SysUserEntity(); userEntity.setUserId(1L); List最后项目目录结构 总结list = sysUserService.queryUserInfo(userEntity.getUserId()); logger.info("list:" + list); } }
SpringBoot和Mybatis这对CP,完美
示例代码-github
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75491.html
摘要:本文章的源码再文章末尾什么是查询缓存有一级缓存和二级缓存。默认开启一级缓存。证明了一级缓存只是在数据库会话内部共享的。但是,整合到中后,一级缓存就会被关闭。根据时间表比如没有刷新间隔缓存不会以任何时间顺序来刷新。 仓库地址:spring-boot-learning欢迎star、fork,给作者一些鼓励 学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机...
摘要:本文章的源码再文章末尾什么是查询缓存有一级缓存和二级缓存。默认开启一级缓存。证明了一级缓存只是在数据库会话内部共享的。但是,整合到中后,一级缓存就会被关闭。根据时间表比如没有刷新间隔缓存不会以任何时间顺序来刷新。 仓库地址:spring-boot-learning欢迎star、fork,给作者一些鼓励 学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机...
摘要:本文章的源码再文章末尾什么是查询缓存有一级缓存和二级缓存。默认开启一级缓存。证明了一级缓存只是在数据库会话内部共享的。但是,整合到中后,一级缓存就会被关闭。根据时间表比如没有刷新间隔缓存不会以任何时间顺序来刷新。 学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机制,在部署的时候踩过了一些坑。在此记录和分享一下Mybatis的缓存作用。 本文章的源码再...
阅读 3197·2021-09-06 15:02
阅读 2243·2019-08-30 15:48
阅读 3439·2019-08-29 11:08
阅读 3281·2019-08-26 13:55
阅读 2440·2019-08-26 13:35
阅读 3162·2019-08-26 12:11
阅读 2598·2019-08-26 11:48
阅读 881·2019-08-26 11:42