小項目改造快速引入 mybatis的流程分析
項目背景
項目在最開始,定位為一個插件、功能補充,為現(xiàn)有的 OA 提供一個報表功能,用于統(tǒng)計各個流程的數(shù)據(jù)
功能方面非常簡單,考慮到開發(fā)速度,直接按 springboot
項目進行開發(fā),依賴方面僅僅使用 spring-boot-starter-web, spring-boot-starter-jdbc, sqljdbc4, lombook
通過 @Bean
的方式注入 sql
查詢所需要的 JdbcTemplate
實例,后續(xù)的 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
文件夾,用于存放相關(guān)的 xxMapper
的接口文件。需要在接口上使用類注解 @Mapper 讓 mybatis 框架來識別。 代碼示例如下
@Mapper public interface RequestMapper { }
在 mybatis
文件夾下,存放與 xxMapper
相對應的 xml
文件
根據(jù) 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
執(zhí)行的 sql
,規(guī)范為對應的 Mapper + xml
文件,并調(diào)整相關(guān)的函數(shù)調(diào)用,整個項目的改造就基本完成
總結(jié)
由于使用了 mybatis-spring-boot-starter
這個 start
,加上我們遵循一些默認約定,只使用了一個配置就將 mybatis
應用到了這個項目上。這次改造中最大的變動就是將原 sql 處理為 xxMapper + xx.xml
兩種文件
可以欣賞一下,寫在 xml
中的 sql,是多么的優(yōu)雅
到此這篇關(guān)于小項目改造快速引入 mybatis的文章就介紹到這了,更多相關(guān)引入 mybatis內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于kafka實現(xiàn)Spring Cloud Bus消息總線
消息總線是一種通信工具,可以在機器之間互相傳輸消息、文件等,這篇文章主要介紹了如何利用kafka實現(xiàn)SpringCloud Bus消息總線,感興趣的可以學習一下2022-04-04Java操作mongodb增刪改查的基本操作實戰(zhàn)指南
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,由c++語言編寫,旨在為WEB應用提供可擴展的高性能數(shù)據(jù)存儲解決方案,下面這篇文章主要給大家介紹了關(guān)于Java操作mongodb增刪改查的基本操作實戰(zhàn)指南,需要的朋友可以參考下2023-05-05springboot+nginx+https+linux實現(xiàn)負載均衡加域名訪問簡單測試
這篇文章主要介紹了springboot+nginx+https+linux實現(xiàn)負載均衡加域名訪問簡單測試,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-05-05