Java中Mybatis-Plus使用方式介紹
1 Mybatis-Plus簡介
Mybatis-Plus 提供了多種方式來執(zhí)行 SQL,包括使用注解、XML 映射文件和 Lambda 表達(dá)式等。其中,使用 Lambda 表達(dá)式是 Mybatis-Plus 推薦的方式,因?yàn)樗又庇^和類型安全。
2 使用方法
1 Lambda 表達(dá)式執(zhí)行 SQL
以下是一個(gè)使用 Lambda 表達(dá)式執(zhí)行 SQL 的示例,現(xiàn)在我們有一個(gè)名為
User的實(shí)體類,其中包含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 對象,使用 eq 方法指定查詢條件為 name = #{name},其中 #{name} 是參數(shù)占位符。
然后,調(diào)用 baseMapper.selectList 方法執(zhí)行查詢,并返回查詢結(jié)果。
2 組合示例
要傳遞參數(shù),可以將參數(shù)作為方法的參數(shù),并在查詢條件中使用
eq、ne、in、like等方法指定參數(shù)值。例如,假設(shè)要查詢年齡大于等于
minAge,小于等于maxAge的用戶,可以修改上面的示例代碼如下:
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í)行查詢,并返回查詢結(jié)果。
3 復(fù)雜sql
另外,如果需要執(zhí)行復(fù)雜的 SQL,例如聯(lián)合查詢、分組查詢等,可以使用 Mybatis-Plus 提供的 SQL 構(gòu)建器,它可以幫助你構(gòu)建復(fù)雜的 SQL 語句。
以下是一個(gè)使用 SQL 構(gòu)建器執(zhí)行聯(lián)合查詢的示例,假設(shè)你有一個(gè)名為 Order 的實(shí)體類,其中包含 id、userId 和 amount 屬性,你需要查詢每個(gè)用戶的訂單總金額:
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 對象,使用 select 方法指定要查詢的字段為 user_id 和 sum(amount) as total_amount,其中 sum(amount) 表示每個(gè)用戶的訂單總金額,as total_amount 是為結(jié)果集中的這個(gè)字段取別名。
然后,使用 groupBy 方法將結(jié)果按照 user_id 進(jìn)行分組。
最后,調(diào)用 baseMapper.selectMaps 方法執(zhí)行查詢,并返回查詢結(jié)果。
注意,在使用 SQL 構(gòu)建器執(zhí)行復(fù)雜的 SQL 語句時(shí),需要使用正確的 SQL 語法,并且需要特別注意 SQL 注入的問題。
可以使用 Mybatis-Plus 提供的參數(shù)綁定方式來避免 SQL 注入問題,例如
#{param}、${param}等方式。
3 其他注入sql的方式
Mybatis-Plus 提供了多種注入 SQL 的方式,包括使用注解、XML 映射文件和 Lambda 表達(dá)式等。
不同的注入方式適用于不同的場景和需求,可以根據(jù)具體情況選擇適合的方式。
以下是幾種常用的注入 SQL 的方式:
1 使用注解
可以使用
@Select、@Update、@Delete、@Insert注解來注入 SQL 語句。例如:
@Select("SELECT * FROM user WHERE name = #{name}")
List<User> selectByName(@Param("name") String name);在這個(gè)示例中,使用
@Select注解注入了一條查詢語句,其中#{name}表示參數(shù)占位符,@Param("name")表示參數(shù)名稱。使用這種方式注入 SQL 語句比較簡單,但是不夠靈活,不支持復(fù)雜的 SQL 語句。
2 使用 XML 映射文件
可以使用 XML 映射文件來注入 SQL 語句,這種方式可以支持復(fù)雜的 SQL 語句,并且可以將 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è)示例中,將查詢語句寫在 XML 映射文件中,使用
<select>標(biāo)簽指定 SQL 語句,并使用resultType屬性指定返回結(jié)果類型。然后,在 Java 代碼中調(diào)用該方法即可。
以上就是Java之Mybatis-Plus使用方式介紹的詳細(xì)內(nèi)容,更多關(guān)于Java Mybatis-Plus使用方式的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot配置Druid數(shù)據(jù)監(jiān)控代碼實(shí)例
這篇文章主要介紹了SpringBoot配置Druid數(shù)據(jù)監(jiān)控代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Java中的時(shí)間日期API知識點(diǎn)總結(jié)
本文給大家總結(jié)了Java中的時(shí)間日期API知識點(diǎn)以及相關(guān)的實(shí)例代碼分享,有興趣的朋友參考學(xué)習(xí)下。2018-04-04
Spring循環(huán)依賴正確性及Bean注入的順序關(guān)系詳解
這篇文章主要給大家介紹了關(guān)于Spring循環(huán)依賴的正確性,以及Bean注入的順序關(guān)系的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
Springboot遷移到Micronaut實(shí)現(xiàn)過程詳解
這篇文章主要為大家?介紹了Springboot遷移到Micronaut實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
SpringBoot中事務(wù)失效的六個(gè)原因解析
這篇文章主要介紹了SpringBoot中事務(wù)失效的六個(gè)原因解析,由于Spring的事務(wù)是基于AOP的方式結(jié)合動態(tài)代理來實(shí)現(xiàn)的,因此事務(wù)方法一定要是public的,這樣才能便于被Spring做事務(wù)的代理和增強(qiáng),需要的朋友可以參考下2023-10-10
Spring Boot RabbitMQ 延遲消息實(shí)現(xiàn)完整版示例
本篇文章主要介紹了Spring Boot RabbitMQ 延遲消息實(shí)現(xiàn)完整版示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05

