这篇文章主要介绍了小项目改造快速引入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的流程分析
基础教程推荐
- Java文件管理操作的知识点整理 2023-05-19
- java基础知识之FileInputStream流的使用 2023-08-11
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java实现线程插队的示例代码 2022-09-03
- java实现多人聊天系统 2023-05-19
- springboot自定义starter方法及注解实例 2023-03-31
- Java实现查找文件和替换文件内容 2023-04-06
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- Java并发编程进阶之线程控制篇 2023-03-07
- Java数据结构之对象比较详解 2023-03-07