简介

业务场景

mybatisplus该框架目标是帮忙咱们主动实现单表的CRUD;

介绍

该框架指标是对mybatis框架只做加强不做扭转-->简化开发,提高效率

个性

官网中个性如下:

原理

原理-->以对象的形式操作数据库

实现:

  1. 利用注解实现对象与表绑定 属性与字段绑定.
  2. 定义一个公共的Mapper接口,定义公共的CRUD操作 利用泛型辨别对象.
  3. 依照特定的语法,将对象转化为sql语句:如下例:
例子: 将user对象插入数据库中.    userMapper.insert(user对象);  //程序员实现的最初的代码    sql: insert into 表名(字段.....) values (属性值......); 由mp动静拼接之后交由mybatis执行.

通过注解绑定,由底层生成表名(字段.....);传入属性值为为对象中的值;再由MP动静拼接之后交由mybatis执行.

spring整合MP

1.增加jar包依赖

<!--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,增加两个可能会抵触.

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

MP API应用

以下别离是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;@SpringBootTestpublic 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);    }}