2.23学习总结MP

1,Springboot 3.0版本以上需要JDK17所以尽量不要是使用3.0以上的版本,不然会出现很多错误。

2,Spingboot的测试类扫描的包是启动类所在的包及其子包,如果包不对,测试类中就无法自动注入

1,如何搭建一个MP

1,写Dao接口,继承baseMapper<实体类>


@Mapper
public interface studentDao extends BaseMapper<student> {
}

@Mapper作用:

从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件。

接口方法注解主要是四个:@Insert、@Delete、@Update、@Select

添加了@Mapper注解之后这个接口在编译时会生成相应的实现类

@MapperScan作用:

修改的时候,传入的是实体类,也就是说,你传的实体类要有id,根据这个id去修改数据库中实体类的属性,如果有些属性没有被设置,就不会被修改。

2,lombok作用

简化实体类的set,get,构造方法,hash和equal覆盖的生成

一个@Data都包含了所有,但是不包含两个构造方法

一个小技巧:Ctrl + H 查看接口的所有实现

3.MP如何实现分页

我们做分页,就相当于在select * form table XXXX limit XXX。在sql语句后面追加一些语句,如limit XXX,就相当于实现了功能增强。

void getFenye()
    {
        IPage page = new Page(1,2);//当前页,每页多少条
        studentDao.selectPage(page,null);
        page.getCurrent();//获得当前页码
        page.getPages();//一共多少页
        page.getRecords();//查询数据库的结果,返回list集合
        page.getTotal();//所有记录条数
        page.getSize();//每一页的条数
    }

3.1MP给我们提供了分页拦截器,配置分页拦截器,不然分页不会生效。

@Configuration
public class MPconfig {
    @bean
    public MybatisPlusInterceptor MPintercepter()
    {
        //定义拦截器
        MybatisPlusInterceptor mp = new MybatisPlusInterceptor();
        //往大的拦截器中添加具体的拦截器
        mp.addInnerInterceptor(new PaginationInnerInterceptor());
        return mp;
    }
    
}

@Configuration详解,功能:将想要的组件添加到容器中

@bean:给容器中添加组件,以方法名作为组件的id。返回类型为组件类型,返回的值,就是组件在容器中的实例

3.2执行分页功能

void getFenye()
    {
        IPage page = new Page(1,2);//当前页,每页多少条
        studentDao.selectPage(page,null);
        page.getCurrent();//获得当前页码
        page.getPages();//一共多少页
        page.getRecords();//查询数据库的结果,返回list集合
        page.getTotal();//所有记录条数
        page.getSize();//每一页的条数
    }

4,MP实现条件查询

第一种方式

 void getTJ()
    {
        //条件查询第一种方式,使用Wrapper封装条件
        QueryWrapper wp = new QueryWrapper();
        //参数为列名,比较的值
        wp.lt("age",18);//lt小于
        List<student> students = studentDao.selectList(wp);
        System.out.println(students);
    }

这是多条件查询。上面是and 关系

这是or条件查询。

4.1查询条件为null值的情况

通过第一个参数判断,如果是true,连接后面的条件。如果不是true,就不连接条件。

4.2查询投影

就想挑选查询出来的字段有哪些。

框框里是要投影的字段,这种只适合lamad格式

不使用lamad形式

lqw.select(字段名):条件查询挑选某些字段

还可以进行分组,但是我们要使用selectMap,得到一个键值组合

对于某些函数不能用的情况,就自己在Dao中书写

4.3查询条件

eq(字段,值)

范围查询,between(字段,小的值,大的值)

模糊查询

likeright:百分号在右边。 likeleft:百分号在左边

5,字段映射

当数据库的字段与实体类的字段不一致时,怎么办呢?

使用@TableField注解,在value中关联数据库中的字段。

使用exist属性,改为false,表明这个在数据库中不存在。

采用select * 会导致开放所有字段的查看权限。

使用select改为false,表示该属性不参与查询。

6,id生成策略

雪花算法:64位二进制,long值,数据库 bigint

可以选择在yml配置文件中配置所有实体类的id策略。 还有很多可以在yml中进行全局配置,比如表名的前缀等

7,多数据操作

8,逻辑删除

进行逻辑删除后,执行select查全集,默认排除已经被逻辑删除的数据

全局配置

9,MP还能实现乐观锁的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值