Java mybatis-plus詳解
1、簡介
MyBatis-Plus 是一個 Mybatis 增強版工具,在 MyBatis 上擴充瞭其他功能沒有改變其基本功能,為瞭簡化開發提交效率而存在。
2、適用情況
1、對於隻進行單表操作來說,mybatis-plus代碼量比mybatis的代碼量少很多,極大的提高瞭開發效率
2、對於多表操作來說,更推薦mybatis,因為mybatis-plus的方法比較難以理解,用起來不太方便,不如自己寫sql語句的邏輯那麼清晰明瞭
3、mybatis-plus前期準備(工程將以 H2 作為默認數據庫進行演示)
1、使用 Spring Initializer快速初始化一個 Spring Boot 工程
2、導入mybatis-plus依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>spring-latest-version</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>Latest Version</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies>
3、yml文件中添加相關配置
# DataSource Config spring: datasource: driver-class-name: org.h2.Driver schema: classpath:db/schema-h2.sql data: classpath:db/data-h2.sql url: jdbc:h2:mem:test username: root password: test
4、在 Spring Boot 啟動類中添加 @MapperScan 註解,掃描 Mapper 文件夾
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
5、編寫實體類和Mapper類
//entity @Data public class User { private Long id; private String name; private Integer age; private String email; } //Mapper public interface UserMapper extends BaseMapper<User> { }
6、service繼承IService
public interface UserService extends IService<User>
7、serviceImpl繼承ServiceImpl
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService
4、mybatis-plus的sql操作(Service層)
1、Save:插入
// 插入一條記錄(選擇字段,策略插入) boolean save(T entity); // 插入(批量) boolean saveBatch(Collection<T> entityList); // 插入(批量) boolean saveBatch(Collection<T> entityList, int batchSize);
2、SaveOrUpdate:修改插入
// TableId 註解存在更新記錄,否插入一條記錄 boolean saveOrUpdate(T entity); // 根據updateWrapper嘗試更新,否繼續執行saveOrUpdate(T)方法 boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper); // 批量修改插入 boolean saveOrUpdateBatch(Collection<T> entityList); // 批量修改插入 boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);
3、Remove:刪除
// 根據 entity 條件,刪除記錄 boolean remove(Wrapper<T> queryWrapper); // 根據 ID 刪除 boolean removeById(Serializable id); // 根據 columnMap 條件,刪除記錄 boolean removeByMap(Map<String, Object> columnMap); // 刪除(根據ID 批量刪除) boolean removeByIds(Collection<? extends Serializable> idList);
4、Update:更新
// 根據 UpdateWrapper 條件,更新記錄 需要設置sqlset boolean update(Wrapper<T> updateWrapper); // 根據 whereWrapper 條件,更新記錄 boolean update(T updateEntity, Wrapper<T> whereWrapper); // 根據 ID 選擇修改 boolean updateById(T entity); // 根據ID 批量更新 boolean updateBatchById(Collection<T> entityList); // 根據ID 批量更新 boolean updateBatchById(Collection<T> entityList, int batchSize);
5、Get:單體查詢
// 根據 ID 查詢 T getById(Serializable id); // 根據 Wrapper,查詢一條記錄。結果集,如果是多個會拋出異常,隨機取一條加上限制條件 wrapper.last("LIMIT 1") T getOne(Wrapper<T> queryWrapper); // 根據 Wrapper,查詢一條記錄 T getOne(Wrapper<T> queryWrapper, boolean throwEx); // 根據 Wrapper,查詢一條記錄 Map<String, Object> getMap(Wrapper<T> queryWrapper); // 根據 Wrapper,查詢一條記錄 <V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper)
6、List:多條查詢
// 查詢所有 List<T> list(); // 查詢列表 List<T> list(Wrapper<T> queryWrapper); // 查詢(根據ID 批量查詢) Collection<T> listByIds(Collection<? extends Serializable> idList); // 查詢(根據 columnMap 條件) Collection<T> listByMap(Map<String, Object> columnMap); // 查詢所有列表 List<Map<String, Object>> listMaps(); // 查詢列表 List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper); // 查詢全部記錄 List<Object> listObjs(); // 查詢全部記錄 <V> List<V> listObjs(Function<? super Object, V> mapper); // 根據 Wrapper 條件,查詢全部記錄 List<Object> listObjs(Wrapper<T> queryWrapper); // 根據 Wrapper 條件,查詢全部記錄 <V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);
7、Page:分頁查詢(需要導入相關的配置或依賴)
// 無條件分頁查詢 IPage<T> page(IPage<T> page); // 條件分頁查詢 IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper); // 無條件分頁查詢 IPage<Map<String, Object>> pageMaps(IPage<T> page); // 條件分頁查詢 IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);
8、Count:記錄數據個數
// 查詢總記錄數 int count(); // 根據 Wrapper 條件,查詢總記錄數 int count(Wrapper<T> queryWrapper);
5、詳細資料
由於篇幅有限,先寫到這裡
具體內容請看
1、mybatis-plus官網:https://mp.baomidou.com/
2、MyBatis-Plus 通用IService使用詳解
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- mybatis-plus中BaseMapper入門使用
- Mapper層繼承BaseMapper<T>需要引入的pom依賴方式
- springboot整合mybatis-plus實現多表分頁查詢的示例代碼
- MybatisPlus實現對象嵌套關聯查詢一對多List集合查詢
- Mybatis-Plus多表關聯查詢的使用案例解析