日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MybatisPlus实现条件查询

發布時間:2024/4/13 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MybatisPlus实现条件查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

wapper介紹?

Wrapper : 條件構造抽象類,最頂端父類

? ? AbstractWrapper : 用于查詢條件封裝,生成 sql 的 where 條件

? ? ? ? QueryWrapper : Entity 對象封裝操作類,不是用lambda語法

? ? ? ? UpdateWrapper : Update 條件封裝,用于Entity對象更新操作

? ? AbstractLambdaWrapper : Lambda 語法使用 Wrapper統一處理解析 lambda 獲取 column。

? ? ? ? LambdaQueryWrapper :看名稱也能明白就是用于Lambda語法使用的查詢Wrapper

? ? ? ? LambdaUpdateWrapper : Lambda 更新封裝Wrapper

@RunWith(SpringRunner.class) @SpringBootTest public class QueryWrapperTests {@Autowiredprivate UserMapper userMapper;}

AbstractWrapper


注意:以下條件構造器的方法入參中的?column?均表示數據庫字段

ge、gt、le、lt、isNull、isNotNull

@Test public void testDelete() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.isNull("name").ge("age", 12).isNotNull("email");int result = userMapper.delete(queryWrapper);System.out.println("delete return count = " + result);}

SQL:UPDATE user SET deleted=1 WHERE deleted=0 AND name IS NULL AND age >= ? AND email IS NOT NULL

eq、ne

注意:seletOne返回的是一條實體記錄,當出現多條時會報錯

@Test public void testSelectOne() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("name", "Tom");User user = userMapper.selectOne(queryWrapper);System.out.println(user);}

SELECT id,name,age,email,create_time,update_time,deleted,version FROM user WHERE deleted=0 AND name = ??

between、notBetween

包含大小邊界

@Test public void testSelectCount() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.between("age", 20, 30);Integer count = userMapper.selectCount(queryWrapper);System.out.println(count);}

SELECT COUNT(1) FROM user WHERE deleted=0 AND age BETWEEN ? AND ??

allEq

@Test public void testSelectList() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();Map<String, Object> map = new HashMap<>();map.put("id", 2);map.put("name", "Jack");map.put("age", 20);queryWrapper.allEq(map);List<User> users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);}

SELECT id,name,age,email,create_time,update_time,deleted,version?

FROM user WHERE deleted=0 AND name = ? AND id = ? AND age = ??

like、notLike、likeLeft、likeRight

selectMaps返回Map集合列表

@Test public void testSelectMaps() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.notLike("name", "e").likeRight("email", "t");List<Map<String, Object>> maps = userMapper.selectMaps(queryWrapper);//返回值是Map列表maps.forEach(System.out::println);}

SELECT id,name,age,email,create_time,update_time,deleted,version?

FROM user WHERE deleted=0 AND name NOT LIKE ? AND email LIKE ??

in、notIn、inSql、notinSql、exists、notExists

in、notIn:

  • notIn("age",{1,2,3})--->age not in (1,2,3)
  • notIn("age", 1, 2, 3)--->age not in (1,2,3)

inSql、notinSql:可以實現子查詢

  • 例:?inSql("age", "1,2,3,4,5,6")--->age in (1,2,3,4,5,6)
  • 例:?inSql("id", "select id from table where id < 3")--->id in (select id from table where id < 3)
@Test public void testSelectObjs() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();//queryWrapper.in("id", 1, 2, 3);queryWrapper.inSql("id", "select id from user where id < 3");List<Object> objects = userMapper.selectObjs(queryWrapper);//返回值是Object列表objects.forEach(System.out::println);}

SELECT id,name,age,email,create_time,update_time,deleted,version?

FROM user WHERE deleted=0 AND id IN (select id from user where id < 3)?

or、and

注意:這里使用的是?UpdateWrapper?

不調用or則默認為使用?and?連

@Test public void testUpdate1() {//修改值User user = new User();user.setAge(99);user.setName("Andy");//修改條件UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();userUpdateWrapper.like("name", "h").or().between("age", 20, 30);int result = userMapper.update(user, userUpdateWrapper);System.out.println(result);}

UPDATE user SET name=?, age=?, update_time=? WHERE deleted=0 AND name LIKE ? OR age BETWEEN ? AND ?

嵌套or、嵌套and

這里使用了lambda表達式,or中的表達式最后翻譯成sql時會被加上圓括號

@Test public void testUpdate2() {//修改值User user = new User();user.setAge(99);user.setName("Andy");//修改條件UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();userUpdateWrapper.like("name", "h").or(i -> i.eq("name", "李白").ne("age", 20));int result = userMapper.update(user, userUpdateWrapper);System.out.println(result); }

UPDATE user SET name=?, age=?, update_time=??

WHERE deleted=0 AND name LIKE ??

OR ( name = ? AND age <> ? )?

orderBy、orderByDesc、orderByAsc

@Test public void testSelectListOrderBy() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.orderByDesc("id");List<User> users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);}

SELECT id,name,age,email,create_time,update_time,deleted,version?

FROM user WHERE deleted=0 ORDER BY id DE

last

直接拼接到 sql 的最后

注意:只能調用一次,多次調用以最后一次為準 有sql注入的風險,請謹慎使用

@Test public void testSelectListLast() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.last("limit 1");List<User> users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);}

SELECT id,name,age,email,create_time,update_time,deleted,version?

FROM user WHERE deleted=0?limit 1?

指定要查詢的列

@Test public void testSelectListColumn() {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select("id", "name", "age");List<User> users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);}

SELECT id,name,age FROM user WHERE deleted=0?

set、setSql

最終的sql會合并 user.setAge(),以及 userUpdateWrapper.set() ?和 setSql() 中 的字段

@Test public void testUpdateSet() {//修改值User user = new User();user.setAge(99);//修改條件UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();userUpdateWrapper.like("name", "h").set("name", "老李頭")//除了可以查詢還可以使用set設置修改的字段.setSql(" email = '123@qq.com'");//可以有子查詢int result = userMapper.update(user, userUpdateWrapper);}

UPDATE user SET age=?, update_time=?, name=?, email = '123@qq.com' WHERE deleted=0 AND name LIKE ??

?

總結

以上是生活随笔為你收集整理的MybatisPlus实现条件查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。