个人比较喜欢 jpa 这种极简的模式, 但是为了项目保持统一性技术选型还是定了 mybatis. 到网上找了一下关于 spring boot 和 mybatis 组合的相关资料, 各种各样的形式都有, 看的人心累, 结合了 mybatis 的官方 demo 和文档终于找到了最简的两种模式, 花了一天时间总结后分享出来.
ORM 框架的本质是简化编程中操作数据库的编码, 发展到现在基本上就剩两家了, 一个是宣称可以不用写一句 sQ L 的 hibernate, 一个是可以灵活调试动态 sql 的 mybatis, 两者各有特点, 在企业级系统开发中可以根据需求灵活使用. 发现一个有趣的现象: 传统企业大都喜欢使用
hibernate, 互联网行业通常使用 mybatis.hibernate 特点就是所有的 sql 都用 Java 代码来生成, 不用跳出程序去写 (看)sql, 有着编程的完整性, 发展到最顶端就是 spring data jpa 这种模式了, 基本上根据方法名就可以生成对应的 sql 了, 有不太了解的可以看我的上篇文章构建微服务: spring data jpa 的使用.
mybatis 初期使用比较麻烦, 需要各种配置文件, 实体类, dao 层映射关联, 还有一大推其它配置. 当然 mybatis 也发现了这种弊端, 初期开发了 generator 可以根据表结果自动生产实体类, 配置文件和 dao 层代码, 可以减轻一部分开发量; 后期也进行了大量的优化可以使用注解了, 自动管理 dao 层和配置文件等, 发展到最顶端就是今天要讲的这种模式了, mybatis-spring-boot-starter 就是 springboot+mybatis 可以完全注解不用配置文件, 也可以简单配置轻松上手.
" 现在想想 spring boot 就是牛逼呀, 任何东西只要关联到 spring boot 都是化繁为简.
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 文件, 现在最新版本是 1.1.1
好了下来分别介绍两种开发模式
无配置文件注解版 就是一切使用注解搞定.
1 添加相关 maven 文件
完整的 pom 包这里就不贴了, 大家直接看源码
2,application.properties 添加相关配置
springboot 会自动加载 spring.datasource.* 相关配置, 数据源就会自动注入到 sqlSessionFactory 中, sqlSessionFactory 会自动注入到 Mapper 中, 对了你一切都不用管了, 直接拿起来使用就行了.
在启动类中添加对 mapper 包扫描 @MapperScan
或者直接在 Mapper 类上面添加注解 @Mapper, 建议使用上面那种, 不然每个 mapper 加个注解也挺麻烦的
3, 开发 Mapper
第三步是最关键的一块, sql 生产都在这里
为了更接近生产我特地将 user_sex,nick_name 两个属性在数据库加了下划线和实体类属性名不一致, 另外 user_sex 使用了枚举
"● @Select 是查询类的注解, 所有的查询均使用这个● @Result 修饰返回的结果集, 关联实体类属性和数据库字段一一对应, 如果实体类属性和数据库属性名保持一致, 就不需要这个属性来修饰.● @Insert 插入数据库使用, 直接传入实体类会自动解析属性到对应的值● @Update 负责修改, 也可以直接传入对象● @delete 负责删除" 注意, 使用 #符号和 $ 符号的不同:
4, 使用
上面三步就基本完成了相关 dao 层开发, 使用的时候当作普通的类注入进入就可以了
源码中 controler 层有完整的增删改查, 这里就不贴了
极简 xml 版本
极简 xml 版本保持映射文件的老传统, 优化主要体现在不需要实现 dao 的是实现层, 系统会自动根据方法名在映射文件中找对应的 sql.
1, 配置 pom 文件和上个版本一样, 只是 application.properties 新增以下配置
指定了 mybatis 基础配置文件和实体类映射文件的地址
mybatis-config.xml 配置
这里也可以添加一些 mybatis 基础的配置
2, 添加 User 的映射文件
其实就是把上个版本中 mapper 的 sql 搬到了这里的 xml 中了
3, 编写 Dao 层的代码
对比上一步这里全部只剩了接口方法
4, 使用
使用和上个版本没有任何区别, 大家就看代码吧
如何选择
两种模式各有特点, 注解版适合简单快速的模式, 其实像现在流行的这种微服务模式, 一个微服务就会对应一个自已的数据库, 多表连接查询的需求会大大的降低, 会越来越适合这种模式. 老传统模式比适合大型项目, 可以灵活的动态生成 SQL, 方便调整 SQL, 也有痛痛快快, 洋洋洒洒的写 SQL 的感觉.
来源: https://www.cnblogs.com/molis/p/10505520.html