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


    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对象更新操作

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

     例子:

            //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);
  • 相关阅读:
    基于AngularJS的前端云组件最佳实践
    光裁员有什么用,商业变现才是王道
    迄今为止最完整的推送说明书
    个推技术实现原理介绍
    安卓推送——个推服务端api使用误区
    Gerrit代码Review入门实战
    iOS AFNetworking HTTPS 认证
    iOS开发零碎知识点
    Xcode 如何删除过期的Provisioning Profile文件
    一个section刷新 一个cell刷新
  • 原文地址:https://www.cnblogs.com/yanghj/p/12446686.html
Copyright © 2020-2023  润新知