欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

小白的springboot之路(十六)、mybatis-plus 的使用

程序员文章站 2022-04-14 16:33:06
0-前言 mybatis plus是对mybatis的增强,集成mybatis plus后,简单的CRUD和分页就不用写了,非常方便,五星推荐; 1-集成 1-1、添加依赖 com.baomidou

0-前言

  mybatis plus是对mybatis的增强,集成mybatis plus后,简单的crud和分页就不用写了,非常方便,五星推荐;

1-集成

1-1、添加依赖

        <!-- 9、集成mybatis-plus  -->
        <dependency>
            <groupid>com.baomidou</groupid>
            <artifactid>mybatis-plus-boot-starter</artifactid>
            <version>3.2.0</version>
        </dependency>

 

1-2、配置文件增加配置

#mybatis-plus
mybatis-plus.mapper-locations=classpath:mapper/*mapper.xml
mybatis-plus.type-aliases-package=com.anson.model
mybatis-plus.configuration.map-underscore-to-camel-case=true

 

1-3、配置类中增加分页bean

    @bean
    public paginationinterceptor paginationinterceptor() {
        return new paginationinterceptor();
    }

 

1-4、model(工具生成即可)

package com.anson.model;
import java.io.serializable;

public class user implements  serializable
{
    //----------------------------
    private integer id;
    private string username;
    private string password;
    private string realname;
    //---------------------------

    public integer getid() {
        return id;
    }

    public void setid(integer id) {
        this.id = id;
    }

    public string getusername() {
        return username;
    }

    public void setusername(string username) {
        this.username = username == null ? null : username.trim();
    }

    public string getpassword() {
        return password;
    }

    public void setpassword(string password) {
        this.password = password == null ? null : password.trim();
    }

    public string getrealname() {
        return realname;
    }

    public void setrealname(string realname) {
        this.realname = realname == null ? null : realname.trim();
    }
}

 

1-5、mapper(xml)

<?xml version="1.0" encoding="utf-8"?>
<!doctype mapper public "-//mybatis.org//dtd mapper 3.0//en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.anson.dao.usermapper">
  <resultmap id="baseresultmap" type="com.anson.model.user">
    <id column="id" jdbctype="integer" property="id" />
    <result column="username" jdbctype="varchar" property="username" />
    <result column="password" jdbctype="varchar" property="password" />
    <result column="realname" jdbctype="varchar" property="realname" />
  </resultmap>
  <sql id="base_column_list">
    id, username, password, realname
  </sql>

</mapper>

 

1-6、dao(mapper类),继承 basemapper

package com.anson.dao;

import com.anson.model.user;
import com.baomidou.mybatisplus.core.mapper.basemapper;
import javafx.scene.control.pagination;
import org.apache.ibatis.annotations.select;
import org.springframework.stereotype.repository;
import com.baomidou.mybatisplus.extension.plugins.pagination.page;
import java.util.list;

@repository
public interface usermapper extends basemapper<user>
{
}

 

1-7、service 继承 serviceimpl

package com.anson.service;

import com.anson.dao.usermapper;
import com.anson.model.user;
import com.baomidou.mybatisplus.extension.plugins.pagination.page;
import com.baomidou.mybatisplus.extension.service.impl.serviceimpl;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;

@service
public class userservice extends serviceimpl<usermapper, user>
{
    @autowired
    usermapper usermapper;
}

 

1-8、controller

  看见没,以上基本没有一行代码,但是在controller我们已经可以直接使用增删查改和分页了

//-----------mybatis plus--------------------
    //1、增

        user user= new user();
        user.setid(6);
        user.setusername("anson");
        user.setpassword("1236216");
        user.setrealname("王琪琪");
        userservice.save(user);

    }
    //2、删
userservice.removebyid(id); //3、查 user b =userservice.getbyid(id); //4、改 user update = new user(); update.setid(6); update.setusername("alex2266"); userservice.updatebyid(update); } //5、分页 ipage<user> page=new page(1,3); page = userservice.page(page);

 

怎么样,是不是很爽,项目中,只有少部分特殊的操作需要单独写sql和方法,大部分crud都不需要写了

 

2、注意的地方

  mybatis中,对于下划线“_”,默认是转换成大写字母处理的,比如我们数据库表字段“update_time”,mybatis会转换成“updatetime”;

所以,为了避坑,直接给出强制建议(或者说结论):

  1、数据库表设计,不要采用大小写,一律小写,多个单词组合采用下划线连接,如字段“update_time”、“edit_by”

  2、model中,所有采用下划线的字段,转换成驼峰大小写,如:

    “update_time” 在实体类中为:“updatetime”,

    “edit_by” 在实体类中为: “editby”

 

3、mybatis plus强大的条件构造器querywrapper、updatewrapper

  muybatis plus 可以通过条件构造器增加各种查询和更新条件,有以下四种条件构造器(主要用后两种,lambda则看个人喜好):

    lambdaquerywrapper :看名称也能明白就是用于lambda语法使用的查询wrapper
    lambdaupdatewrapper : lambda 更新封装wrapper
    querywrapper : entity 对象封装操作类,不是用lambda语法
    updatewrapper : update 条件封装,用于entity对象更新操作

先贴张常用条件构造器函数图(图片来源于网络):

小白的springboot之路(十六)、mybatis-plus 的使用

 

 例子:

        //1、根据条件删除
        querywrapper<user> querywrapper = new querywrapper<>();
        querywrapper
                .isnull("username")
                .ge("id", 12)
                .isnotnull("realname");
        boolean delete = userservice.remove(querywrapper);

        //2、根据条件查询
        querywrapper<user> querywrapper2 = new querywrapper<>();
        querywrapper2.eq("username", "eee");
        user user = userservice.getone(querywrapper2);

        //3、根据条件查询并分页
        page<user> page2 = new page<>(1, 5);
        querywrapper<user> querywrapper3 = new querywrapper<>();
        querywrapper3.like("username", "a");
        ipage<user> useripage = userservice.page(page2, querywrapper3);

        //4、根据条件更新

        user user2 = new user();
        user2.setrealname("zhangsan");

        updatewrapper<user> userupdatewrapper = new updatewrapper<>();
        userupdatewrapper.eq("username", "eee");

        boolean update = userservice.update(user, userupdatewrapper);