mybatis plus CRUD


首先我們的項目建立之后我們要建立一個實體類來對應我們的數據褲中的信息

employee

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dailuobo.devops.common.domain.entity.BaseEntity;
import lombok.Data;


/**
 * TableName
 * 是讓我們的類和數據庫的表建立關系
 *      value 是表明 默認不寫value
 */
@Data
@TableName("tbl_employee")
public class Employee  {


    /**
     * TableId
     *  value 指定表中額主鍵列名 如果實體屬性和列名一致 可以省略不寫
     *  type指定主鍵策略  mybatisplus文檔上有
     */
    //主鍵注解 因為我們的表設置的是自增的但是要讓mybatisplus同步否則報錯
    @TableId(value = "id",type = IdType.AUTO)  //設置自增  因為
    private Integer id;

    @TableField(value = "last_name") //標注當前數據庫的列名
    private String lastName;
    private String email;
    private Integer gender;
    private Integer age;



    //如果這個類中有其他的非數據的字段這個時候可以使用
    @TableField(exist = false)
    private Double salary;  //再插入的時候就會忽略這個字段不去數據庫中校驗
}

 

 

然后為這個類再建立能操作數據的方法類Mapper

EmployeeMapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dailuobo.devops.mp.common.domain.entity.Employee;


/**
 * Mapper接口
 * 基於mybatis:在Mapper接口中編寫CRUD方法 提供Mapper接口對應的SQL映射文件以及方法對應的SQL語句
 *
 *
 * 基於Mybatis Plus  讓XXXMapper繼承BaseMapper接口即可
 *     BaseMapper<T> : 泛型指定的就是當前Mapper解耦所操作的實體類對象
 */

public interface EmployeeMapper extends BaseMapper<Employee> {
}

 

然后我們可以通過這個EmployeeMapper類進行數據的增刪改的操作也可以  通過services類繼承之后再進行間接操作

 

我現在測試方法中進行操作:

 

 

 

    @Test
    public void testCommonInsert(){


        //初始化employee對象
        Employee employee = new Employee();

        employee.setLastName("test");
        employee.setEmail("mp@caicai.com");
        employee.setGender(1);
//        employee.setAge(20);

        
        //插入數據庫  insert會對實體類的屬性進行非空判斷 只有非空才會出現在sql語句中
        Integer result = employeeMapper.insert(employee);  //通過點進去的源碼可以看到是有一個返回值的  這個返回值是int就是我們隊數據庫的影響的條數

//        employeeMapper.insertAllColumn   插入的時候如果值沒有信息設置為null字符插入 而insert現在集合了這個默認的功能
        System.out.println("result"+result);



        //我們可以通過對象.getId()來獲取對象表中數據的主鍵值
        employee.getId();
    }

 

插入:insert

這個就相當於我們的python的orm操作信息,都是通過特定的語句可以直接進行數據的操作

mapper對象.insert(對象);

insert插入的是一個對象 然后返回的是一個插入條數 數字

        //初始化employee對象
        Employee employee = new Employee();

        employee.setLastName("test");
        employee.setEmail("mp@caicai.com");
        employee.setGender(1);
        employee.setAge(20);


        //插入數據庫  insert會對實體類的屬性進行非空判斷 只有非空才會出現在sql語句中
        Integer result = employeeMapper.insert(employee);  //通過點進去的源碼可以看到是有一個返回值的  這個返回值是int就是我們隊數據庫的影響的條數

//        employeeMapper.insertAllColumn   插入的時候如果值沒有信息設置為null字符插入 而insert現在集合了這個默認的功能
        System.out.println("result"+result);  // result  1

 

插入的時候只能放在最后插入 哪怕指定已經存在的id插入也不會修改,會自動在后面插入

    @Test
    public void testUpdate(){

        Employee employee = new Employee();
        employee.setLastName("insert_one");
        employee.setId(7); // 只可以當做插入不可以當做修改  如果指定已經有的id插入 也會放在后面依次插入

        Integer result = employeeMapper.insert(employee);
        if (result >= 1){
            System.out.println("插入成功"+result);
        }else{
            System.out.println("插入失敗");
        }

    }
View Code

 

 

 

getId() :獲取對象表中的主鍵值

        //我們可以通過對象.getId()來獲取對象表中數據的主鍵值
        employee.getId();獲取employee 對象的主鍵值

 

 

updateById(); 修改信息  指定主鍵id去修改 不然就會修改失敗 報錯,哪怕把一整個對象更新進去也要指定這個對象的主鍵id

Mapper對象.updateById(更新對象);

更新的時候就要知道和python一樣我們先設置值 然后再更新到數據庫中

 

   @Test
    public void testUpdate(){
        Employee employee = new Employee();

        employee.setId(5); // 指定修改的主鍵id信息
        employee.setLastName("222");
//        employee.setEmail("eqeq");


        //updatebyid如果全部更新 就直接把對象放進去 如果針對選擇更新 那就獲取這個更新的主鍵id然后進行更新

        Integer result = employeeMapper.updateById(employee);
        System.out.println("result:"+result); //必須要

    }

 

 

根據條件修改:update()  

update(對象,條件構造器)

 

                    QueryWrapper<Server> queryWrapper = new QueryWrapper<>();
                    queryWrapper.eq("id",name);  //條件
                    serverMapper.update(server,queryWrapper);



 

修改:

        Employee employee = new Employee();
        employee.setId(7);
        employee.setEmail("111111");
//        employee.setLastName("update_two");
//        Integer result = employeeMapper.updateById(employee);

        UpdateWrapper updateWrapper = new UpdateWrapper();
        updateWrapper.eq("id", 7);
//        Integer result = employeeMapper.update (employee,new UpdateWrapper().set("name", "buiob"));

        employeeMapper.update(employee, updateWrapper);

 

 

 

 

查詢操作:

 

 

 

    selectById();   通過主鍵查詢 
  selectBatchIds() 通過主鍵list查詢 返回的也是list集合


  selectList();根據判斷條件查詢


  selectOne() 構造查詢條件 返回的是一個對象

 

 

 

 

selectById();

Mapper對象.selectById(要查詢的主鍵id);

 

  @Test
    public void testcommonSelect(){ //獲取主鍵是3的數據對象
        Employee employee = employeeMapper.selectById(3); //根據主鍵來查找到這個主鍵對應的數據  獲取的是一個對象
        System.out.println("employee對象:"+employee);
    }

 

selectOne();  和selectMap差不多都是按照條件然后查詢 但是返回值不同

構構造查詢條件 () 內傳遞的是對象

 

    @Test
    public void selectOne(){

//        Employee employee = new Employee();
//        employee.setEmail("tree.com");
        Employee employee1 = employeeMapper.selectOne(new QueryWrapper<Employee>().eq("email","three.com"));
        System.out.println("selevtOne:"+ employee1);
        
        //selevtOne:Employee(id=2, lastName=three, email=three.com, gender=1, age=30, salary=null)

    }

 

 

 

 

 

查詢多個信息   selectBatchIds()  返回的是list集合

 /**                                                                    
  * 通過多個id獲取                                                            
  */                                                                    
 @Test                                                                  
 public void getlist(){      //返回的是查詢的對象信息                              
     List<Integer> idlist = new ArrayList<>();                          
     idlist.add(1);                                                     
     idlist.add(3);                                                     
                                                                        
     List<Employee> employees = employeeMapper.selectBatchIds(idlist);  
     System.out.println("employees:"+employees);   //返回的就是查詢到的3條信息                     
 }                                                                      

 

 

構造條件查詢:selectByMap()返回的list集合 里面必須是map對象

/** selectByMap    條件查詢                                                  
   *    通過Map封裝條件查詢                                                        
   */                                                                      
  @Test                                                                    
  public void getMap(){                                                    
      //通過Map封裝信息                                                          
      Map<String,Object> columnMap = new HashMap<>();                      
      columnMap.put("last_name","Tom");     //這里面寫列名而不是對應的屬性名              
      columnMap.put("gender",1);     //查詢last_name是Tom  gender是1的數據庫信息                                      
      List<Employee> employees = employeeMapper.selectByMap(columnMap);    
      System.out.println(employees); //就獲取的查詢的對象信息    
// 結果封裝成Map:Map:[Employee(id=2, lastName=three, email=three.com, gender=1, age=30, salary=null)]
  } 

 

    @Test
    public void selectMap(){
        Map<String,Object> stringMap = new HashMap<>();
        //設置條件查詢
        stringMap.put("email","three.com");//設置查詢條件
        List<Employee> employeeList = employeeMapper.selectByMap(stringMap);  //查詢email ==  tree.com
        System.out.println("Map:"+employeeList);

    }

 

 

 

selectList(); 按照字段查詢

    @Test
    public  void selecList(){
        // select 要查詢的字段   只返回你設置的字段其他的都是null
        List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().select("email"));
        System.out.println(employeeList); 返回的是每條記錄的設置查詢的字段 其余的不顯示
    }

相當於執行SELECT email FROM tbl_employee  這條sql語句

 

    @Test
    public void selectList(){
        Employee employee = new Employee();
// where 條件查詢和and添加和orderby使用
// SELECT age FROM tbl_employee WHERE email = ? AND age = ? ORDER BY id ASC
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().select("age").eq("email",employee.getEmail()) .eq("age",employee.getAge()).orderBy(true,true,"id")); System.out.println("employeeList:"+employeeList); }

相當於SQL語句SELECT age FROM tbl_employee WHERE email = ? AND age = ? ORDER BY id ASC

 

 

 

刪除操作:delete

 

deleteById()  根據主鍵刪除

deleteBatchIds() 根據主鍵列表刪除
deleteMap() 根據條件刪除 根據的是map中的條件

 

 

deleteById(): 根據主鍵刪除

    @Test
    public void deleteBy(){ Integer result = employeeMapper.deleteById(4); //返回的是刪除的條數  System.out.println("delete:"+ result); }

 

 

deleteBatchIds() :根據主鍵列表刪除

 

    @Test
    public void deleteByIds(){
        List<Integer> idlist = new ArrayList<>();
        idlist.add(3);
        idlist.add(7);
        idlist.add(12);
        idlist.add(11);
        Integer integer = employeeMapper.deleteBatchIds(idlist);  //根據list集合進行刪除
        System.out.println("deletelist:"+integer); 
    }

 

 

 

 

deleteByMap() : 根據條件刪除

    @Test
    public void deleteMap(){ Map<String, Object> columnMap = new HashMap<>(); columnMap.put("id",5); //根據id刪除 Integer integer = employeeMapper.deleteByMap(columnMap); System.out.println("deletemap"+integer); }

 

    @Test
    public void deleteMap(){ Map<String,Object> columnMap = new HashMap<>(); columnMap.put("email",null); //刪除email 和last_name都是null的信息 columnMap.put("last_name",null); Integer integer = employeeMapper.deleteByMap(columnMap); System.out.print("map:"+integer); }

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM