这篇文章主要介绍了小项目改造快速引入mybatis,功能方面非常简单,考虑到开发速度,直接按springboot项目进行开发,依赖方面仅仅使用spring-boot-starter-web,spring-boot-starter-jdbc,sqljdbc4,lombook,需要的朋友可以参考下
项目背景
项目在最开始,定位为一个插件、功能补充,为现有的 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
补充文件夹
项目的建议目录排版如下:
|- src\main\java
|- com.xx
|- bean
|- mapper
xxxApplication
|- src\main\resources
|- static
|- mybaits
|- Request.xml
application.yml
在 xxxApplication
这个启动类的同层,建立 mapper
文件夹,用于存放相关的 xxMapper
的接口文件。需要在接口上使用类注解 @Mapper 让 mybatis 框架来识别。 代码示例如下
@Mapper
public 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内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:小项目改造快速引入 mybatis的流程分析
- SpringBoot使用thymeleaf实现一个前端表格方法详解 2023-06-06
- Java中的日期时间处理及格式化处理 2023-04-18
- Java实现顺序表的操作详解 2023-05-19
- Spring Security权限想要细化到按钮实现示例 2023-03-07
- JSP页面间传值问题实例简析 2023-08-03
- 基于Java Agent的premain方式实现方法耗时监控问题 2023-06-17
- ExecutorService Callable Future多线程返回结果原理解析 2023-06-01
- 深入了解Spring的事务传播机制 2023-06-02
- JSP 制作验证码的实例详解 2023-07-30
- Springboot整合minio实现文件服务的教程详解 2022-12-03