MyBatis-Plus入门

 

MyBatis-Plus入门

视频地址:https://www.imooc.com/video/19490

github地址:https://github.com/Lining128/mybatis-plus

学前掌握技能:熟悉Lambda\SpringBoot\Maven\MyBatis
 
开发环境:Eclipse\jdk\Maven\Mysql

一、简介

    1.mybatis-plus简介
                是mybatis的增强工具,只增强不改变
                官网地址: https://mybatis.plus/
  特性:无侵入、损耗小、强大的CRUD操作
                             支持lambda 形势调用、支持多种数据库
                            支持主键自动生成、支持ActiveRecord模式
                            支持自定义全局通用操作、支持关键词自动转义
                            内置代码生成器、内置分页插件、内置性能分析插件
                            内置全局拦截插件、内置sql注入剥离器
 2.安装lombok
        maven仓库: https://mvnrepository.com/
        搜lombok下载下载在eclipse文件目录下
  3.入门
 
新建数据库及表:  
       新建maven项目,导入依赖
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</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>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
<!--mybatis-puls启动器-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>
<!--mysql jdbc驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

文件结构

二、通用mapper
         yml文件新增:
修改test文件下的测试
三、mybatis-puls查询方法
        1.查询
2.条件构造器查询
 
/**
     * 名字中包含雨并且年龄小于40
     * name like '%雨%' and age < 40
     */
    @Test
    public void selectByWrapper01(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.like("name","雨").lt("age",40);

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /**
     * 名字中包含雨并且年龄大于20且小于等于40并且email不为空
     * name like '%雨%' and age between 20 and 40 and email is not null
     */
    @Test
    public void selectByWrapper02(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.like("name","雨").between("age",20,40).isNotNull("email");

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

    /**
     * 名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同的按照id升序排列
     * name like '王%' or age >= 40 order by age desc,id asc
     */
    @Test
    public void selectByWrapper03(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.like("name","王").or().ge("age",25).orderByDesc("age").orderByAsc("id");

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

    /**
     * 创建时间日期为2019.2.14并且直属上级为王姓
     * date_format(create_time,'%Y-%m-%d')and manager_id in (select id from user where name like '王%')
     */
    @Test
    public void selectByWrapper04(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.apply("date_format(create_time,'%Y-%m-%d') ={0}","2019-02-14")
                .inSql("manager_id","select id from user where name like '王%'");

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /**
     * 名字王姓并且(年龄小于40或者邮箱不为空)
     * name like '王%' and (age<40 or email is not null)
     */
    @Test
    public void selectByWrapper05(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.likeRight("name","王").and(wq->wq.lt("age",40)
                .or().isNotNull("email"));

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /**
     * 名字王姓或者(年龄小于40并且年龄大于20并且邮箱不为空)
     * name like '王%' or (age<40 and age > 20 and email is not null)
     */
    @Test
    public void selectByWrapper06(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.likeRight("name","王").or(wq->wq.lt("age",40)
                .gt("age",20).isNotNull("email"));

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /**
     * (年龄小于40或者邮箱不为空)并且名字为王姓
     * (age<40 or email is not null )and name like '王%'
     */
    @Test
    public void selectByWrapper07(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.nested(wq->wq.lt("age",40)
                .or().isNotNull("email").likeRight("name","王"));

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /**
     * 年龄30、31、34、35
     * age in (30、31、34、35)
     */
    @Test
    public void selectByWrapper08(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.in("age",Arrays.asList(30,31,34,35));

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /**
     * 只返回满足条件的其中一条语句即可
     * limit 1
     */
    @Test
    public void selectByWrapper09(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.in("age",Arrays.asList(30,31,34,35)).last("limit 1");

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
四、分页查询
 /**
     * 名字中包含雨并且年龄小于40
     * name like '%雨%' and age < 40
     */
    @Test
    public void selectByWrapperSupper01(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.select("id","name").like("name","雨").lt("age",40);

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /**
     * 名字中包含雨并且年龄小于40
     * name like '%雨%' and age < 40
     */
    @Test
    public void selectByWrapperSupper02(){
        QueryWrapper<User>queryWrapper = new QueryWrapper<User>();
        queryWrapper.like("name","雨").lt("age",40).select(User.class,info->!info.getColumn()
                .equals("create_time")&&!info.getColumn().equals("manager_id"));

        List<User>userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

 

五、AR模式

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatisPlusApplicationTests {
	@Test
	public void contextLoads() {
		List<User>  selectList= new User().selectList(null);
		System.out.println(selectList);
	}
}

主键策略:在yml文件中加入

public enum IdType {
    /**
     * 数据库ID自增
     */
    AUTO(0),
    /**
     * 该类型为未设置主键类型
     */
    NONE(1),
    /**
     * 用户输入ID
     * <p>该类型可以通过自己注册自动填充插件进行填充</p>
     */
    INPUT(2),

    /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */
    /**
     * 全局唯一ID (idWorker)
     */
    ID_WORKER(3),
    /**
     * 全局唯一ID (UUID)
     */
    UUID(4),
    /**
     * 字符串全局唯一ID (idWorker 的字符串表示)[默认策略]
     */
    ID_WORKER_STR(5);
}
//局部策略

@TableId(type = IdType.AUTO)
private long userId;
//全局策略
mybatis-plus:
  global-config:
    db-config:
      id-type: auto

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值