如何快速引入mybatis
这篇文章主要讲解了“如何快速引入mybatis”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何快速引入mybatis”吧!
项目背景
项目在最开始,定位为一个插件、功能补充,为现有的 OA 提供一个报表功能,用于统计各个流程的数据
功能方面非常简单,考虑到开发速度,直接按 springboot
项目进行开发,依赖方面仅仅使用 spring-boot-starter-web, spring-boot-starter-jdbc, sqljdbc4, lombook
通过 @Bean
的方式注入 sql
查询所需要的 JdbcTemplate
实例,后续的 sql
操作全部都以 template.queryForList(sqlStr)
的方式进行
由于忽略的 sql 上的复杂,加上 java8
尚未支持字符串模版,导致代码中的 sql 类似于如下
阅读、修改非常不便,决定还是引入 mybatis
,最核心的诉求提高 sql 的可阅读性,以及可维护性
开始改造
引入对应的 start
pom.xml
中添加 springboot
专用的 mybatis
依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version></dependency>
在 application.yml 中补充配置
主要是指定 mybatis
中 sql
所在的 xml
文件解析位置
mybatis: mapper-locations: - classpath:mybaits/*.xml
补充文件夹
项目的建议目录排版如下:
|- class="lazy" data-src\main\java |- com.xx |- bean |- mapper xxxApplication|- class="lazy" data-src\main\resources |- static |- mybaits |- Request.xml application.yml
在 xxxApplication
这个启动类的同层,建立 mapper
文件夹,用于存放相关的 xxMapper
的接口文件。需要在接口上使用类注解 @Mapper 让 mybatis 框架来识别。 代码示例如下
@Mapperpublic interface RequestMapper {}
在 mybatis
文件夹下,存放与 xxMapper
相对应的 xml
文件
根据 mybatis 官方文档,可以得知用于存放 sql
的标准 xml
文件格式如下:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="org.mybatis.example.BlogMapper"> <select id="selectBlog" resultType="Blog"> select * from Blog where id = #{id} </select></mapper>
我们需要修改 mapper
标签中的 namespace
属性,使之和我们的 xxMapper
对应;以同样的格式补充新的 <select></select>
查询语句
最后,将 通过 JdbcTemplate
执行的 sql
,规范为对应的 Mapper + xml
文件,并调整相关的函数调用,整个项目的改造就基本完成
总结
由于使用了 mybatis-spring-boot-starter
这个 start
,加上我们遵循一些默认约定,只使用了一个配置就将 mybatis
应用到了这个项目上。这次改造中最大的变动就是将原 sql 处理为 xxMapper + xx.xml
两种文件
可以欣赏一下,写在 xml
中的 sql,是多么的优雅
感谢各位的阅读,以上就是“如何快速引入mybatis”的内容了,经过本文的学习后,相信大家对如何快速引入mybatis这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341