MyBatisPlus插件的學習1


簡化開發, 活用插件. 擁抱變化,持續學習.

首先是配置1:

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

配置2 :

server:
  port: 8008
  servlet:
    context-path: /mp
spring:
  datasource:
    username: root
    password: 123
    url: jdbc:mysql://127.0.0.1:3306/mp?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
logging:
  level:
    root: warn
    com.example.demo.dao: trace
  pattern:
    console: '%p%m%n'
#xml自定義sql
mybatis-plus:
  mapper-locations:
  - com/example/demo/mapper/*

常用注解 @TableName 類名<===>表名

                @TableId  主鍵映射

                @TableField 列名映射    ps (駝峰命名對應_, managerId <==>  manager_id)

                    當 exist = false 數據不會插入數據庫

來自BaseMapper常規API:

 /**
     * 插入一條記錄
     *
     * @param entity 實體對象
     */
    int insert(T entity);

    /**
     * 根據 ID 刪除
     *
     * @param id 主鍵ID
     */
    int deleteById(Serializable id);

    /**
     * 根據 columnMap 條件,刪除記錄
     *
     * @param columnMap 表字段 map 對象  (key數據庫的列名,value比較的值)
     */
    int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

    /**
     * 刪除(根據ID 批量刪除)
     *
     * @param idList 主鍵ID列表(不能為 null 以及 empty)
     */
    int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

條件構造器AbstractWrapper :

以查詢方法舉例子(構造實例):
QueryWrapper<User> query = Wrappers.query();
@Param(Constants.WRAPPER) Wrapper<T> queryWrapper
new LambdaQueryChainWrapper<>(userMapper)
LambdaQueryWrapper<User> query = Wrappers.lambdaQuery();

詳細案例:

1 // WHERE (username LIKE ? AND age BETWEEN ? AND ? OR age >= ?) ORDER BY id DESC
2         query.likeRight("username", "張").between("age", 20, 30).or().ge("age", 20).orderByDesc("id");
3 // 子查詢,時間格式
4 // WHERE (date_format(create_time,'%Y-%m-%d') = ? AND manager_id IN (select id from mp_user where username like '大%'))
5 query.apply("date_format(create_time,'%Y-%m-%d') = {0}", "2019-09-28").inSql("manager_id","select id from mp_user where username like '大%'");
and  or 的使用
//
WHERE (username LIKE ? AND ( (email IS NOT NULL OR age <= ?) )) query.likeLeft("username", "翔").and(wp -> wp.isNotNull("email").or().le("age", 80)); // WHERE (username LIKE ? OR ( (email IS NOT NULL AND age >= ?) )) query.like("username", "雨").or(wp -> wp.isNotNull("email").ge("age", 89));
   () 優先的設定 和 last取值
//
WHERE (( (email IS NOT NULL OR age <= ?) ) AND username LIKE ?) ORDER BY age ASC limit 2 query.nested(wp -> wp.isNotNull("email").or().le("age", 31)).like("username", "張") .orderByAsc("age").last("limit 2");
    // (age IN (?,?,?)) 
        query.in("age", Arrays.asList(25,28,32));
 // id, username  排除屬性: 用!和&&進行修飾 
        query.select(User.class , wp -> wp.getColumn().equals("id")||wp.getColumn().equals("username")).le("age", 100);
// 當屬性和列名不一致的時候不要使用下面的方式
//        query.select("id","username").le("age", 100);
//condition 判斷條件是否執行
public Children like(boolean condition, R column, Object val) 
query.like(StringUtils.isNotEmpty(name), "username",name)

query.select("manager_id","avg(age) as avg", "min(age) as min", "max(age) as max")
        .groupBy("manager_id").having("sum(age) < {0}", 500);
List
<Map<String, Object>> list = userMapper.selectMaps(query); selectObject 返回一列 selectOne 返回一行,多了報錯 selectCount int
selectMaps 適用於非全量數據的返回

 

 


免責聲明!

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



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