Mybatis基于注解與XML開(kāi)發(fā)使用流程
1 關(guān)于SpringBoot
SpringBoot是一個(gè)基于Spring框架的快速開(kāi)發(fā)的腳手架,它能夠幫助我們開(kāi)發(fā)者快速搭建項(xiàng)目環(huán)境,并提供了一些建議的配置方式,降低了開(kāi)發(fā)者程序的開(kāi)發(fā)和部署難度。
2 關(guān)于MyBatis
2.1 MyBatis概述
MyBatis是Java的持久化框架,目的是為了使操作數(shù)據(jù)庫(kù)更加方便、靈活、高效??梢酝ㄟ^(guò)Java注解和XML文件來(lái)映射Java對(duì)象和SQL語(yǔ)句,提供了非常靈活的SQL編寫方式和動(dòng)態(tài)SQL語(yǔ)句的創(chuàng)建方式,可以與Spring框架結(jié)合使用。
2.2 MyBatis核心思想
將Java對(duì)象和數(shù)據(jù)庫(kù)操作分離,通過(guò)注解和XML映射文件映射到數(shù)據(jù)庫(kù)的字段上,并提供相應(yīng)的API來(lái)操作數(shù)據(jù)庫(kù)。可以自動(dòng)將SQL語(yǔ)句轉(zhuǎn)為JDBC代碼,并根據(jù)指定的返回值類型生成對(duì)應(yīng)的結(jié)果提供給開(kāi)發(fā)者使用。
2.3 MyBatis使用流程
1.配置MyBatis環(huán)境
在pom.xml中添加相關(guān)依賴:MyBatis Framework 和 MySQL Driver
2.配置文件中配置數(shù)據(jù)庫(kù)的連接信息(application.properties)
spring.datasource.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root
3.定義pojo類,和數(shù)據(jù)表做好映射關(guān)系
4.編寫Dao層接口,在接口中定義操作數(shù)據(jù)庫(kù)的方法,在注解或者XML文件中實(shí)現(xiàn)具體的SQL語(yǔ)句。
@Mapper public interface UserMapper{ @Insert("INSERT INTO user VALUES(NULL,#{username})") int insert(User user); }
5.使用
// 1.自動(dòng)裝配 @Autowired private UserMapper userMapper // 2.調(diào)用方法 userMpper.insert(...)
3 MyBatis配置SQL方式
3.1 基于注解方式
3.1.1 說(shuō)明
基于注解方式省去了配置XML文件的編寫工作,并且可以很方便的完成一些 簡(jiǎn)單的 CRUD操作,但是對(duì)于一些復(fù)雜的SQL語(yǔ)句使用起來(lái)會(huì)很冗余。
3.1.2 使用流程
- (maven工程)在pom.xml中添加MyBatis和MySQL相關(guān)的依賴
- 在配置文件中(application.properties)配置數(shù)據(jù)庫(kù)的連接信息
- 創(chuàng)建實(shí)體類,和數(shù)據(jù)庫(kù)中的表做好對(duì)應(yīng)關(guān)系
- 配置Mapper接口,在接口中添加@Mapper注解,告訴底層為此接口創(chuàng)建實(shí)現(xiàn)類,在實(shí)現(xiàn)類中定義數(shù)據(jù)訪問(wèn)的邏輯,執(zhí)行與數(shù)據(jù)庫(kù)的會(huì)話
- 在接口中定義方法,在方法上使用注解標(biāo)注SQL語(yǔ)句的類型,可以使用的注解有:@Insert、@Dlelete、@Update、@Select
- 如果SQL語(yǔ)句中涉及到多個(gè)參數(shù),可以使用@Param注解給每個(gè)參數(shù)取名。
- 自動(dòng)裝配并在應(yīng)用程序中使用即可
@Autowired private XxxMapper xxxMapper; xxxMapper.接口中的方法(參數(shù)...);
3.1.3 常用注解
- @Insert(“SQL”)
- @Dlelete(“SQL”)
- @Update(“SQL”)
- @Select(“SQL”)
3.2 基于XML方式
3.2.1 相比注解優(yōu)勢(shì)
- 更好的可讀性
- XML文件具有良好的結(jié)構(gòu)和語(yǔ)義,可以使JAVA代碼和SQL語(yǔ)句徹底分離,便于管理和優(yōu)化。注解配置SQL語(yǔ)句可能使JAVA代碼變的冗長(zhǎng)。
- 更好的復(fù)用性
- 將SQL語(yǔ)句寫入XML文件中,通過(guò) 和標(biāo)簽 將重復(fù)的SQL抽取并引用,從而提高了SQL語(yǔ)句的復(fù)用性。
- 更好的支持動(dòng)態(tài)SQL
- 動(dòng)態(tài)SQL語(yǔ)句是根據(jù)運(yùn)行時(shí)的參數(shù)來(lái)生成的SQL,復(fù)雜性較高,使用XML文件更加方便。
3.2.2 使用流程
- 添加依賴:pom.xml
- 配置數(shù)據(jù)源:application.propertis
- 配置xml文件的掃描路徑:application.properties
- 創(chuàng)建實(shí)體類,做好和數(shù)據(jù)表的對(duì)應(yīng)關(guān)系
- 定義接口,添加@Mapper注解,并定義接口中的方法
- 創(chuàng)建xml文件,使用標(biāo)簽配置SQL
- 裝配使用
@Autowired private XxxMapper xxxMapper; xxxMapper.接口方法(參數(shù)...);
3.2.3 常用標(biāo)簽
- insert標(biāo)簽
- delelte標(biāo)簽
- update標(biāo)簽
- select標(biāo)簽
使用select標(biāo)簽需要指定 resultType 的屬性值 - foreache標(biāo)簽:用于動(dòng)態(tài)刪除
<delete id="xxx"> DELETE FROM xxx WHERE id in( <foreache collection="對(duì)象類型" item="變量名" separator="分隔符"> #{變量名} </foreache> ) </delete>
set標(biāo)簽和if標(biāo)簽:用于動(dòng)態(tài)修改
<update id="xxx"> UPDATE xxx <set> <if test="屬性名!=null">字段名=#{屬性名},</if> <if test="屬性名!=null">字段名=#{屬性名},</if> <if test="屬性名!=null">字段名=#{屬性名}</if> </set> </update>
sql標(biāo)簽和include標(biāo)簽:用于SQL語(yǔ)句的復(fù)用
<!--1.重復(fù)SQL抽取--> <sql id="selectSql"> SELECT * FROM xxx </sql> <select id="xxx" resultType="xxx"> <include refid="selectSql"></include> </select> <select id="yyy" resultType="yyy"> <include refid="selectSql"></include> WHERE id>5 </select>
到此這篇關(guān)于Mybatis基于注解與XML開(kāi)發(fā)的文章就介紹到這了,更多相關(guān)Mybatis注解XML開(kāi)發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot處理全局統(tǒng)一異常的兩種方法與區(qū)別
這篇文章主要給大家介紹了關(guān)于Spring Boot處理全局統(tǒng)一異常的兩種方法與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Jackson庫(kù)進(jìn)行JSON?序列化時(shí)遇到了無(wú)限遞歸(Infinite?Recursion)的問(wèn)題及解決方案
使用Jackson庫(kù)進(jìn)行JSON序列化時(shí)遇到了無(wú)限遞歸(Infinite?Recursion)問(wèn)題,這是因?yàn)閮蓚€(gè)實(shí)體類ComPointQuotaEntity和?ComPointEntity之間存在雙向關(guān)聯(lián)point和pointQuota相互引用,本文給大家介紹解決方案,感興趣的朋友一起看看吧2025-03-03通過(guò)Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了通過(guò)Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-03-03Spring原生Rpc六種的正確打開(kāi)方式實(shí)現(xiàn)示例
這篇文章主要為大家展示了Spring原生Rpc六種的正確打開(kāi)方式實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步早日升職加薪2022-02-02使用MDC快速查詢應(yīng)用接口全部執(zhí)行日志
這篇文章主要為大家介紹了使用MDC快速查詢應(yīng)用接口全部執(zhí)行日志的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01