小項(xiàng)目改造快速引入 mybatis的流程分析
項(xiàng)目背景
項(xiàng)目在最開(kāi)始,定位為一個(gè)插件、功能補(bǔ)充,為現(xiàn)有的 OA 提供一個(gè)報(bào)表功能,用于統(tǒng)計(jì)各個(gè)流程的數(shù)據(jù)
功能方面非常簡(jiǎn)單,考慮到開(kāi)發(fā)速度,直接按 springboot
項(xiàng)目進(jìn)行開(kāi)發(fā),依賴方面僅僅使用 spring-boot-starter-web, spring-boot-starter-jdbc, sqljdbc4, lombook
通過(guò) @Bean
的方式注入 sql
查詢所需要的 JdbcTemplate
實(shí)例,后續(xù)的 sql
操作全部都以 template.queryForList(sqlStr)
的方式進(jìn)行
由于忽略的 sql 上的復(fù)雜,加上 java8
尚未支持字符串模版,導(dǎo)致代碼中的 sql 類似于如下
閱讀、修改非常不便,決定還是引入 mybatis
,最核心的訴求提高 sql 的可閱讀性,以及可維護(hù)性
開(kāi)始改造
引入對(duì)應(yīng)的 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 中補(bǔ)充配置
主要是指定 mybatis
中 sql
所在的 xml
文件解析位置
mybatis: mapper-locations: - classpath:mybaits/*.xml
補(bǔ)充文件夾
項(xiàng)目的建議目錄排版如下:
|- src\main\java |- com.xx |- bean |- mapper xxxApplication |- src\main\resources |- static |- mybaits |- Request.xml application.yml
在 xxxApplication
這個(gè)啟動(dòng)類的同層,建立 mapper
文件夾,用于存放相關(guān)的 xxMapper
的接口文件。需要在接口上使用類注解 @Mapper 讓 mybatis 框架來(lái)識(shí)別。 代碼示例如下
@Mapper public interface RequestMapper { }
在 mybatis
文件夾下,存放與 xxMapper
相對(duì)應(yīng)的 xml
文件
根據(jù) mybatis 官方文檔,可以得知用于存放 sql
的標(biāo)準(zhǔn) 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
標(biāo)簽中的 namespace
屬性,使之和我們的 xxMapper
對(duì)應(yīng);以同樣的格式補(bǔ)充新的 <select></select>
查詢語(yǔ)句
最后,將 通過(guò) JdbcTemplate
執(zhí)行的 sql
,規(guī)范為對(duì)應(yīng)的 Mapper + xml
文件,并調(diào)整相關(guān)的函數(shù)調(diào)用,整個(gè)項(xiàng)目的改造就基本完成
總結(jié)
由于使用了 mybatis-spring-boot-starter
這個(gè) start
,加上我們遵循一些默認(rèn)約定,只使用了一個(gè)配置就將 mybatis
應(yīng)用到了這個(gè)項(xiàng)目上。這次改造中最大的變動(dòng)就是將原 sql 處理為 xxMapper + xx.xml
兩種文件
可以欣賞一下,寫在 xml
中的 sql,是多么的優(yōu)雅
到此這篇關(guān)于小項(xiàng)目改造快速引入 mybatis的文章就介紹到這了,更多相關(guān)引入 mybatis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于kafka實(shí)現(xiàn)Spring Cloud Bus消息總線
消息總線是一種通信工具,可以在機(jī)器之間互相傳輸消息、文件等,這篇文章主要介紹了如何利用kafka實(shí)現(xiàn)SpringCloud Bus消息總線,感興趣的可以學(xué)習(xí)一下2022-04-04java實(shí)現(xiàn)MD5加密的方法小結(jié)
這篇文章主要介紹了java實(shí)現(xiàn)MD5加密的方法,結(jié)合具體實(shí)例形式總結(jié)分析了java實(shí)現(xiàn)md5加密的常用操作技巧與使用方法,需要的朋友可以參考下2017-10-10Java操作mongodb增刪改查的基本操作實(shí)戰(zhàn)指南
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),由c++語(yǔ)言編寫,旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案,下面這篇文章主要給大家介紹了關(guān)于Java操作mongodb增刪改查的基本操作實(shí)戰(zhàn)指南,需要的朋友可以參考下2023-05-05java學(xué)習(xí)之利用TCP實(shí)現(xiàn)的簡(jiǎn)單聊天示例代碼
這篇文章主要給大家介紹了關(guān)于java學(xué)習(xí)筆記之利用TCP實(shí)現(xiàn)的簡(jiǎn)單聊天的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12springboot+nginx+https+linux實(shí)現(xiàn)負(fù)載均衡加域名訪問(wèn)簡(jiǎn)單測(cè)試
這篇文章主要介紹了springboot+nginx+https+linux實(shí)現(xiàn)負(fù)載均衡加域名訪問(wèn)簡(jiǎn)單測(cè)試,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05