BaseMapper接口的使用方法
3、相關(guān)方法
3.1、BaseMapper接口
MyBatis-Plus中的基本CRUD在內(nèi)置的 BaseMapper 中都已得到了實現(xiàn),我們可以直接使用,這樣大大的簡化了開發(fā)效率。
/** * Mapper 繼承該接口后,無需編寫 mapper.xml 文件,即可獲得CRUD功能 */ public interface BaseMapper<T> extends Mapper<T> { //插入一條記錄 int insert(T entity); //根據(jù) ID 刪除 int deleteById(Serializable id); //根據(jù)實體(ID)刪除 int deleteById(T entity); //根據(jù) columnMap 條件,刪除記錄 int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap); // 刪除記錄,條件生成器根據(jù)entity生成where后的條件 int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); //刪除(根據(jù)ID或?qū)嶓w 批量刪除) int deleteBatchIds(@Param(Constants.COLL) Collection<?> idList); // 根據(jù) ID 修改 int updateById(@Param(Constants.ENTITY) T entity); // 根據(jù) whereEntity 條件,更新記錄 int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper); //根據(jù) ID 查詢 T selectById(Serializable id); //查詢(根據(jù)ID 批量查詢) List<T> selectBatchIds(@Param(Constants.COLL) Collection<? extends Serializable> idList); // 查詢(根據(jù) columnMap 條件) List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap); //查詢一條記錄 default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper) { ....... } //根據(jù) Wrapper 條件,判斷是否存在記錄 default boolean exists(Wrapper<T> queryWrapper) { ..... } // 根據(jù) Wrapper 條件,查詢總記錄數(shù) Long selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); //根據(jù) entity 條件,查詢?nèi)坑涗? List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); //根據(jù) Wrapper 條件,查詢?nèi)坑涗? List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); //根據(jù) Wrapper 條件,查詢?nèi)坑涗? List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper); // 根據(jù) entity 條件,查詢?nèi)坑涗洠ú⒎摚? <P extends IPage<T>> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); //根據(jù) Wrapper 條件,查詢?nèi)坑涗洠ú⒎摚? <P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper); }
3.1.1、新增
在封裝的 BaseMapper 中只有一個插入語句,因為海量數(shù)據(jù)插入單條SQL無法實行,所以mybatis-plus 把批量插入放在了Service 層對應(yīng)的封裝接口里了。
@Resource private UserMapper userMapper; @Test public void test2(){ //新增數(shù)據(jù) User user1 = new User(); user1.setUsername("mybatisplus測試"); user1.setPassword("12312312"); int insert = userMapper.insert(user1); System.out.println("受影響行數(shù):"+insert); //自動獲取id(默認(rèn)使用雪花算法生成的id) Integer id = user1.getUserId(); //獲取數(shù)據(jù) User user = userMapper.selectById(id); System.out.println(user); }
這個ID是MyBatis-Plus基于雪花算法生成的一個ID。之所以會為負(fù)數(shù),是因為數(shù)據(jù)庫設(shè)置的是自增,而在User實體類中沒有進行設(shè)置
//IdType.ID_WORKER_STR 默認(rèn)的;底層使用了雪花算法;類型為Integer //IdType.AUTO 數(shù)據(jù)庫自增;數(shù)據(jù)庫上必須設(shè)置為自增 //IdType.NONE 沒有設(shè)置主鍵類型;跟隨全局;全局的主鍵策略如果沒有設(shè)置,默認(rèn)是雪花算法 //IdType.INPUT 手動輸入;必須手動輸入,數(shù)據(jù)庫自增也沒用; //IdType.UUID 全局唯一id;無序;字符串; //ID_WORKER_STR 全局唯一(idWorker的字符串表示); @TableId(value = "user_id",type = IdType.AUTO) private Integer userId;
設(shè)置完成后,將數(shù)據(jù)庫之前測試的數(shù)據(jù)刪除,重新運行一下
3.1.2、刪除
數(shù)據(jù)
刪除一行數(shù)據(jù)
//通過id刪除一行數(shù)據(jù) int i = userMapper.deleteById(15); System.out.println("受影響行數(shù):"+i);
批量刪除
//批量刪除 List<Integer> idList = Arrays.asList(16,17, 18); int i1 = userMapper.deleteBatchIds(idList); System.out.println("受影響行數(shù):"+i1 );
通過Map設(shè)置條件
//根據(jù)條件刪除 Map<String, Object> map = new HashMap<>(); map.put("username","新增"); map.put("password","456454"); //刪除username為新增,且password為456454的數(shù)據(jù) int i = userMapper.deleteByMap(map); System.out.println("受影響行數(shù):"+ i );
3.1.3、修改
User user = userMapper.selectById(11); System.out.println(user); //對user進行修改 user.setUsername("修改"); user.setPassword("2131278"); int i = userMapper.updateById(user); System.out.println("受影響行數(shù):"+ i ); //修改后的User User user1 = userMapper.selectById(11); System.out.println(user1);
3.1.4、查詢
查詢一條數(shù)據(jù)
//根據(jù)ID查詢 User user = userMapper.selectById(1); System.out.println(user); //根據(jù) LambdaQueryWrapper 的條件查詢 User user1 = userMapper.selectOne(new LambdaQueryWrapper<User>().like(User::getUsername,"root")); System.out.println(user1);
根據(jù)ID批量查詢
//根據(jù)ID批量查詢 List<Integer> list = Arrays.asList(1, 2, 3); List<User> users = userMapper.selectBatchIds(list); users.forEach(System.out::println);
通過map條件查詢,鍵值對應(yīng)數(shù)據(jù)的字段和值。
//通過map條件查詢 Map<String , Object> map = new HashMap<>(); map.put("username","root"); List<User> users = userMapper.selectByMap(map); users.forEach(System.out::println);
查詢所有數(shù)據(jù)
//查詢所有數(shù)據(jù),參數(shù)為null List<User> users = userMapper.selectList(null); users.forEach(System.out::println);
到此這篇關(guān)于BaseMapper接口的使用的文章就介紹到這了,更多相關(guān)BaseMapper接口的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mybatis-Plus接口BaseMapper與Services使用詳解
- MybatisPlus?BaseMapper?實現(xiàn)對數(shù)據(jù)庫增刪改查源碼
- Mapper層繼承BaseMapper<T>需要引入的pom依賴方式
- mybatis抽取基類BaseMapper增刪改查的實現(xiàn)
- 淺談Mybatis Plus的BaseMapper的方法是如何注入的
- mybatis-plus中BaseMapper入門使用
- MybatisPlus BaseMapper 中的方法全部 Invalid bound statement (not found Error處理)
- Mybatis-Plus BaseMapper的用法詳解
相關(guān)文章
Java中數(shù)學(xué)相關(guān)類的使用教程
Java是一種廣泛使用的編程語言,它提供了許多數(shù)學(xué)運算的函數(shù)和方法,使得開發(fā)者可以輕松地進行各種數(shù)學(xué)計算,下面這篇文章主要給大家介紹了關(guān)于Java中數(shù)學(xué)相關(guān)類使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05SpringBoot集成Tomcat服務(wù)架構(gòu)配置
這篇文章主要為大家介紹了SpringBoot集成Tomcat服務(wù)架構(gòu)配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02淺談java中Math.random()與java.util.random()的區(qū)別
下面小編就為大家?guī)硪黄獪\談java中Math.random()與java.util.random()的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09Java實現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式
Java觀察者模式是一種行為型設(shè)計模式,用于實現(xiàn)對象間的一對多依賴關(guān)系。當(dāng)一個對象的狀態(tài)發(fā)生改變時,它的所有依賴對象都會收到通知并自動更新。觀察者模式可以實現(xiàn)松耦合,增強了系統(tǒng)的可維護性和可拓展性2023-04-04深入理解SpringMVC中央調(diào)度器DispatcherServlet
這篇文章主要介紹了SpringMVC核心之中央調(diào)度器DispatcherServlet的相關(guān)知識,包括SpringMVC請求處理過程及SrpingMVC容器和spring?IOC容器關(guān)系,需要的朋友可以參考下2022-05-05