Java中Mybatis-Plus使用方式介紹
1 Mybatis-Plus簡(jiǎn)介
Mybatis-Plus 提供了多種方式來(lái)執(zhí)行 SQL,包括使用注解、XML 映射文件和 Lambda 表達(dá)式等。其中,使用 Lambda 表達(dá)式是 Mybatis-Plus 推薦的方式,因?yàn)樗又庇^(guān)和類(lèi)型安全。
2 使用方法
1 Lambda 表達(dá)式執(zhí)行 SQL
以下是一個(gè)使用 Lambda 表達(dá)式執(zhí)行 SQL 的示例,現(xiàn)在我們有一個(gè)名為
User
的實(shí)體類(lèi),其中包含id
、name
和age
屬性:
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public List<User> getUsersByName(String name) { LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getName, name); return baseMapper.selectList(queryWrapper); } }
在這個(gè)示例中,我創(chuàng)建了一個(gè) LambdaQueryWrapper 對(duì)象,使用 eq 方法指定查詢(xún)條件為 name = #{name},其中 #{name} 是參數(shù)占位符。
然后,調(diào)用 baseMapper.selectList 方法執(zhí)行查詢(xún),并返回查詢(xún)結(jié)果。
2 組合示例
要傳遞參數(shù),可以將參數(shù)作為方法的參數(shù),并在查詢(xún)條件中使用
eq
、ne
、in
、like
等方法指定參數(shù)值。例如,假設(shè)要查詢(xún)年齡大于等于
minAge
,小于等于maxAge
的用戶(hù),可以修改上面的示例代碼如下:
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public List<User> getUsersByAge(int minAge, int maxAge) { LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.ge(User::getAge, minAge).le(User::getAge, maxAge); return baseMapper.selectList(queryWrapper); } }
在這個(gè)示例中,我添加了一個(gè)新的方法 getUsersByAge,其中兩個(gè)參數(shù) minAge 和 maxAge 分別表示最小年齡和最大年齡。
使用 ge 方法指定年齡大于等于 minAge,使用 le 方法指定年齡小于等于 maxAge。
然后,調(diào)用 baseMapper.selectList 方法執(zhí)行查詢(xún),并返回查詢(xún)結(jié)果。
3 復(fù)雜sql
另外,如果需要執(zhí)行復(fù)雜的 SQL,例如聯(lián)合查詢(xún)、分組查詢(xún)等,可以使用 Mybatis-Plus 提供的 SQL 構(gòu)建器,它可以幫助你構(gòu)建復(fù)雜的 SQL 語(yǔ)句。
以下是一個(gè)使用 SQL 構(gòu)建器執(zhí)行聯(lián)合查詢(xún)的示例,假設(shè)你有一個(gè)名為 Order 的實(shí)體類(lèi),其中包含 id、userId 和 amount 屬性,你需要查詢(xún)每個(gè)用戶(hù)的訂單總金額:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; @Service public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { @Override public List<Map<String, Object>> getOrderAmountByUser() { QueryWrapper<Order> queryWrapper = new QueryWrapper<>(); queryWrapper.select("user_id", "sum(amount) as total_amount") .groupBy("user_id"); return baseMapper.selectMaps(queryWrapper); } }
在這個(gè)示例中,我創(chuàng)建了一個(gè) QueryWrapper 對(duì)象,使用 select 方法指定要查詢(xún)的字段為 user_id 和 sum(amount) as total_amount,其中 sum(amount) 表示每個(gè)用戶(hù)的訂單總金額,as total_amount 是為結(jié)果集中的這個(gè)字段取別名。
然后,使用 groupBy 方法將結(jié)果按照 user_id 進(jìn)行分組。
最后,調(diào)用 baseMapper.selectMaps 方法執(zhí)行查詢(xún),并返回查詢(xún)結(jié)果。
注意,在使用 SQL 構(gòu)建器執(zhí)行復(fù)雜的 SQL 語(yǔ)句時(shí),需要使用正確的 SQL 語(yǔ)法,并且需要特別注意 SQL 注入的問(wèn)題。
可以使用 Mybatis-Plus 提供的參數(shù)綁定方式來(lái)避免 SQL 注入問(wèn)題,例如
#{param}
、${param}
等方式。
3 其他注入sql的方式
Mybatis-Plus 提供了多種注入 SQL 的方式,包括使用注解、XML 映射文件和 Lambda 表達(dá)式等。
不同的注入方式適用于不同的場(chǎng)景和需求,可以根據(jù)具體情況選擇適合的方式。
以下是幾種常用的注入 SQL 的方式:
1 使用注解
可以使用
@Select
、@Update
、@Delete
、@Insert
注解來(lái)注入 SQL 語(yǔ)句。例如:
@Select("SELECT * FROM user WHERE name = #{name}") List<User> selectByName(@Param("name") String name);
在這個(gè)示例中,使用
@Select
注解注入了一條查詢(xún)語(yǔ)句,其中#{name}
表示參數(shù)占位符,@Param("name")
表示參數(shù)名稱(chēng)。使用這種方式注入 SQL 語(yǔ)句比較簡(jiǎn)單,但是不夠靈活,不支持復(fù)雜的 SQL 語(yǔ)句。
2 使用 XML 映射文件
可以使用 XML 映射文件來(lái)注入 SQL 語(yǔ)句,這種方式可以支持復(fù)雜的 SQL 語(yǔ)句,并且可以將 SQL 和 Java 代碼分離。
例如:在
UserMapper.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="com.example.mapper.UserMapper"> <select id="selectByName" resultType="User"> SELECT * FROM user WHERE name = #{name} </select> </mapper>
在 UserMapper.java
文件中:
List<User> selectByName(@Param("name") String name);
在這個(gè)示例中,將查詢(xún)語(yǔ)句寫(xiě)在 XML 映射文件中,使用
<select>
標(biāo)簽指定 SQL 語(yǔ)句,并使用resultType
屬性指定返回結(jié)果類(lèi)型。然后,在 Java 代碼中調(diào)用該方法即可。
以上就是Java之Mybatis-Plus使用方式介紹的詳細(xì)內(nèi)容,更多關(guān)于Java Mybatis-Plus使用方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Java語(yǔ)言MD5加密Base64轉(zhuǎn)換方法
這篇文章主要為大家詳細(xì)介紹了基于Java語(yǔ)言的MD5加密Base64轉(zhuǎn)換方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09java開(kāi)發(fā)中基于JDBC連接數(shù)據(jù)庫(kù)實(shí)例總結(jié)
這篇文章主要介紹了java開(kāi)發(fā)中基于JDBC連接數(shù)據(jù)庫(kù)的方法,以實(shí)例形式較為詳細(xì)的總結(jié)分析了Java使用JDBC的具體步驟與注意事項(xiàng),并附帶了一個(gè)完整實(shí)例加以說(shuō)明,需要的朋友可以參考下2015-11-11解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問(wèn)題
這篇文章主要介紹了解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08JavaWeb簡(jiǎn)單用戶(hù)登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)
這篇文章主要介紹了JavaWeb簡(jiǎn)單用戶(hù)登錄注冊(cè)實(shí)例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Java實(shí)現(xiàn)在線(xiàn)五子棋對(duì)戰(zhàn)游戲(人機(jī)對(duì)戰(zhàn))
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)在線(xiàn)五子棋對(duì)戰(zhàn)游戲(人機(jī)對(duì)戰(zhàn)),文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試一下2022-09-09Springboot2.X集成redis集群(Lettuce)連接的方法
這篇文章主要介紹了Springboot2.X集成redis集群(Lettuce)連接的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07IntelliJ IDEA使用SVN分支的簡(jiǎn)單介紹
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA使用SVN分支的簡(jiǎn)單介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10Java Swing SpringLayout彈性布局的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java Swing SpringLayout彈性布局的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Java項(xiàng)目啟動(dòng)成功、失敗信息實(shí)時(shí)反饋提醒問(wèn)題(郵件或者短信)
這篇文章主要介紹了Java項(xiàng)目啟動(dòng)成功、失敗信息實(shí)時(shí)反饋提醒問(wèn)題(郵件或者短信),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06