mybatisplus該框架目的是幫助咱們自動實現單表的CRUD;java
該框架目標是對mybatis框架只作加強不作改變-->簡化開發,提升效率程序員
官網中特性以下:
spring
原理-->以對象的方式操做數據庫sql
實現:數據庫
例子: 將user對象插入數據庫中. userMapper.insert(user對象); //程序員完成的最後的代碼 sql: insert into 表名(字段.....) values (屬性值......); 由mp動態拼接以後交由mybatis執行.
經過註解綁定,由底層生成表名(字段.....);傳入屬性值爲爲對象中的值;再由MP動態拼接以後交由mybatis執行.api
1.添加jar包依賴mybatis
<!--spring整合mybatis-plus 只導入MP包,刪除mybatis包--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency>
添加MP的jar包後要將mybatis的jar包刪除,MP中會包含mybatis,添加兩個可能會衝突.app
2.原理具體實現:
1)編輯pojo類須要添加註解:
@TableName("表名")--實現表與對象關聯,若是pojo類名與表名一致(不區分大小寫),能夠忽略註解參數中表名
@TableId(type = IdType.AUTO)--在主鍵屬性上添加該註解,表示此屬性爲主鍵且主鍵自增(IdType主要用auto表主鍵自增/UUID表全局惟一)框架
2)Mapper接口繼承BaseMapper<T>--注意實際應用時,泛型T的引入,寫你所用的pojo類便可,不添加的話數據庫不能完成操做測試
3)修改yml配置文件信息,將mybatis改成mybatis-plus便可,別的不須要更改,作到只加強不修改:
mybatis-plus: #定義別名包 type-aliases-package: com.jt.pojo #添加xml文件的依賴 mapper-locations: classpath:/mybatis/mappers/*.xml #開啓駝峯映射 configuration: map-underscore-to-camel-case: true
如下分別是CRUD的常見API使用,具體說明見官網和代碼中註解--https://baomidou.com/
package com.jt.test; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jt.mapper.UserMapper; import com.jt.pojo.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.Arrays; import java.util.List; @SpringBootTest public class TestMybatis { @Autowired private UserMapper userMapper; //本地定義的findAll方法以及sql @Test public void test01(){ List<User> users = userMapper.findAll(); System.out.println(users); } //測試MP方法 @Test public void test02(){ //查詢user表所有數據 List<User> users = userMapper.selectList(null); System.out.println(users); } /** * 1.測試入庫 * 將用戶信息 王大錘 20 男 入庫 */ @Test public void insert(){ User user=new User(); user.setName("王大錘").setAge(20).setSex("男"); userMapper.insert(user); } /** * 2.查詢練習 * 查詢ID爲21的用戶 */ @Test public void select01(){ User user = userMapper.selectById(21); System.out.println(user); //查詢記錄總數 int count = userMapper.selectCount(null); System.out.println(count); } /** * 需求:查詢性別爲女,年齡大於100歲 * 條件構造器:動態拼接where條件的 多條件中默認的鏈接符and * 常見邏輯運算符 * 1.eq = 2.gt > 3.lt < * 4.ge >= 5.le <= */ @Test public void select03(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.eq("sex","女") .gt("age",100); List<User> users = userMapper.selectList(queryWrapper); System.out.println(users); } /** * 需求:1.查詢名字中包含'精'字的男性 "%精%" * 2.查詢以精結尾的 %精 * 3.查詢以精開頭的 精% */ @Test public void select04(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.likeLeft("name","精") //queryWrapper.like("name","精") .eq("sex","男"); List<User> users = userMapper.selectList(queryWrapper); System.out.println(users); } /** * 需求:查詢sex=女 ,以後按照age倒序排列,若是年齡相同按照id排列 */ @Test public void select05(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.eq("sex","女") .orderByDesc("age","id"); List<User> users = userMapper.selectList(queryWrapper); System.out.println(users); } /** * 需求:查詢id爲1,3,5,7,8,9的數據 * 關鍵字 in or * 在關聯查詢中慎用 */ @Test public void select06(){ Integer[] ids = {1,3,5,7,8,9}; List<Integer> list = Arrays.asList(ids); List<User> users = userMapper.selectBatchIds(list); System.out.println(users); } /** * 需求:刪除id爲53的數據 */ @Test public void delete01(){ userMapper.deleteById(53); } /** * 需求:批量刪除id爲1,2,3,4的數據 */ @Test public void delete02(){ Integer[] ids={1,2,3,4}; List<Integer> list = Arrays.asList(ids); userMapper.deleteBatchIds(list); } /** * 需求:刪除age爲30的男性 */ @Test public void delete03(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.eq("age","30") .eq("sex","男"); userMapper.delete(queryWrapper); } /** * 需求:將id爲6的性別修改成女性 */ @Test public void update01(){ User user=new User(); user.setId(6).setSex("女"); userMapper.updateById(user); } /** * 需求:將name爲悟空的角色名字改成卡卡羅特,性別改成男 */ @Test public void update02(){ User user = new User(); user.setName("卡卡羅特").setSex("男"); QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.eq("name","悟空"); userMapper.update(user,queryWrapper); } }