1. 程式人生 > 實用技巧 >Mybatis-Plus 基礎方法演示

Mybatis-Plus 基礎方法演示

package com.example.demo;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.demo.dao.UserMapper; import com.example.demo.entity.User;
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest @RunWith(SpringRunner.class) public class SelectTests { @Autowired
private UserMapper userMapper; /** * 根據主鍵來查 */ @org.junit.Test public void selectById(){ User user = userMapper.selectById(1L); System.out.println(user); } /** * 根據多個id來查詢 */ @Test public void selectByIds(){ List<String> strings = Arrays.asList("1", "2"); List<User> users = userMapper.selectBatchIds(strings); users.forEach(System.out::println); } /** * 根據map來查 */ @Test public void selectByMap(){ //key對應資料庫的列名,不是實體類中的屬性名。 Map<String,Object> map=new HashMap<>(); map.put("name","大boss"); map.put("age","40"); List<User> users = userMapper.selectByMap(map); System.out.println(users); } /** * 查詢名字中包括大並且年齡小於50 */ @Test public void selectByWrapper(){ QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); queryWrapper.like("name","大").lt("age",50); List<User> users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); } /** * 查詢名字中包括李並且(年齡小於30或者郵箱不為空) */ @Test public void selectByWrapper2(){ QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); queryWrapper.likeRight("name","李") .and(wq->wq.lt("age",40).or() .isNotNull("email")); List<User> users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); } /** * limit的使用 */ @Test public void selectByWrapper3(){ QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); queryWrapper.in("age",Arrays.asList(40,15,19)).last("limit 1"); List<User> users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); } /** * select選擇性得輸出欄位 */ @Test public void selectByWrapper4(){ QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); //queryWrapper.select("id","name").like("name","李").lt("age",40); //或者用下面的 queryWrapper.select(User.class,info->!info.getColumn().equals("create_time")); List<User> users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); } /** * 測試condition */ @Test public void selectCondition(){ String name=""; String email="x"; condition(name,email); } private void condition(String name,String email){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.like(StringUtils.isNotBlank(name),"name",name) .like(StringUtils.isNotBlank(email),"email",email); List<User> users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); } /** * 實體類中的資訊出現在where中,比較實用 */ @Test public void selectByWrapperEntity(){ User whereUser=new User(); whereUser.setAge(32); whereUser.setName("張三"); QueryWrapper<User> queryWrapper=new QueryWrapper<>(whereUser); //上面和下面這個2選1即可 //queryWrapper.like("name","張").lt("age",50); List<User> users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); } @Test public void selectByWrapperAllEq(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); Map<String,Object> params=new HashMap<String,Object>(); params.put("name","張三"); params.put("age",null); queryWrapper.allEq(params,false);//第二個引數可以去掉引數為null的情況 List<User> users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); } /** * selectMaps的應用場景,不會讓你輸出的實體中有些屬性為null * {name=張三, id=2} */ @Test public void selectByWrapperMaps(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.select("id","name").like("name","張").lt("age",40); List<Map<String,Object>> users = userMapper.selectMaps(queryWrapper); users.forEach(System.out::println); } /** * Lambda可以防止誤寫 * 我們寫"name"的時候可能會寫成"nname",但是getName寫錯了編譯都不會通過 */ @Test public void selectByLambda(){ LambdaQueryWrapper<User> lambdaQueryWrapper = Wrappers.<User>lambdaQuery(); lambdaQueryWrapper.like(User::getName,"張").lt(User::getAge,50); List<User> users = userMapper.selectList(lambdaQueryWrapper); users.forEach(System.out::println); } /** * 自定義sql selectAll,對應UserMapper中的selectAll方法 */ @Test public void selectMy(){ LambdaQueryWrapper<User> lambdaQueryWrapper = Wrappers.<User>lambdaQuery(); lambdaQueryWrapper.like(User::getName,"張").lt(User::getAge,50); List<User> users = userMapper.selectAll(lambdaQueryWrapper); users.forEach(System.out::println); } /** * 分頁測試 */ @Test public void selectPage(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.gt("age",18); Page<User> page=new Page<User>(0,1); IPage<User> userPage = userMapper.selectPage(page, queryWrapper); System.out.println("總頁數:"+userPage.getPages()); System.out.println("總記錄數:"+userPage.getTotal()); List<User> records = userPage.getRecords(); records.forEach(System.out::println); } @Test public void updateByWrapper(){ UpdateWrapper<User> updateWrapper=new UpdateWrapper<>(); updateWrapper.eq("name","張三").eq("age",29).set("age",30); int rows = userMapper.update(null, updateWrapper); System.out.println("影響的記錄數:"+rows); } }

AR測試,比較方便。

前提條件:實體類繼承Model,

public class User extends Model<User>
package com.example.demo;

import java.time.LocalDateTime;

import com.example.demo.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * ${todo}
 *
 * @date: 2020/11/22
 * @author: Li Bin
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class ARTest {


    @Test
    public void insert(){
        User user=new User();
        user.setName("阿小");
        user.setAge(12);
        user.setCreateTime(LocalDateTime.now());
        user.setEmail("[email protected]");
        //user.setId(4L);
        boolean insert = user.insert();
        System.out.println("新增是否成功:"+insert);

    }

    @Test
    public void select(){
        User user=new User();
        user.setId(4L);
        User userSelect = user.selectById(user);
        System.out.println(userSelect);

    }
}