0-前言

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

1-集成

1-1、添加依赖

        <!-- 、集成mybatis-plus  -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.</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();
user.setUsername("anson");
user.setPassword("");
user.setRealname("王琪琪");
userservice.save(user); }
//2、删
userservice.removeById(id);
//3、查 User b =userservice.getById(id);
//4、改 User update = new User();
update.setId();
update.setUsername("alex2266");
userservice.updateById(update);
}
//5、分页 IPage<User> page=new Page(,);
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", )
.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<>(, );
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);

小白的springboot之路(十六)、mybatis-plus 的使用的更多相关文章

  1. 小白的springboot之路(六)、跨域解决方案CORS

    0-前言 前后端分离.分布式集群,经常都会涉及到跨域访问,而浏览器基于同源策略,正常情况下是不能跨域的,这就需要我们解决跨域访问问题:spring boot解决跨域也比较简单: 1-CORS跨域解决方 ...

  2. 小白的springboot之路(一)、环境搭建、第一个实例

    小白的springboot之路(一).环境搭建.第一个实例 0- 前言 Spring boot + spring cloud + vue 的微服务架构技术栈,那简直是爽得不要不要的,怎么爽法,自行度娘 ...

  3. 小白的springboot之路(十五)、mybatis的PageHelper分页插件使用

    0.前言 用mybatis,那么分页必不可少,基本都是用PageHelper这个分页插件,好用方便: 1.实现 1.1.添加依赖: <!-- 3.集成 mybatis pagehelper--& ...

  4. 小白的springboot之路(三)、集成mybatis与MySQL

    0.前言 mybatis属于半自动的ORM,相比hibernate这种全自动的ORM,兼顾了性能与易用:目前企业项目中,基本都是mybatis的天下:今天就来整合mybatis与MySQL: 1.整合 ...

  5. 小白的springboot之路(十)、全局异常处理

    0.前言 任何系统,我们不会傻傻的在每一个地方进行异常捕获和处理,整个系统一般我们会在一个的地方统一进行异常处理,spring boot全局异常处理很简单: 介绍前先说点题外话,我们现在开发系统,都是 ...

  6. 小白的springboot之路(十四)、AOP

    0.前言 1.什么是AOP AOP(面向切面编程),是一种横切技术,是对OOP的补充和完善: 使用AOP的横切,可以对系统进行无侵入性的日志监听.事务.权限管理等: 思想上跟拦截器其实类似;拦截器是对 ...

  7. 小白的springboot之路(十二)、集成log4j2日志

    0.前言 日志记录对系统来说必不可少,spring boot中常用的日志组件有log4j.logback.log4j2,其中logback是spring boot默认的,已自带:选用log4j2就可以 ...

  8. 小白的springboot之路(十八)、i18n多语言支持(后端篇)

    0-前言 在有些系统中,比如网站,往往需要支持多国语言,英文版中文版什么的,这个其实也不难: 今天我们就来介绍spring boot中用i18n在后端支持多语言: 当然,也可以直接在前端用i18n直接 ...

  9. 小白的springboot之路(十九)、集成swagger(com.spring4all篇)

    0-前言 集成swagger,有两种方式: 一种在前面已经介绍过了,直接集成官方的springfox-swagger2的方式,这种方式需要在配置类中配置 第二种方式是这里要介绍的方式,国人写的com. ...

随机推荐

  1. 常见的Java不规范代码

    1.格式化源代码 Ctrl + Shift + F – 格式化源代码. Ctrl + Shift + O – 管理import语句并移除未使用的语句 除了手动执行这两个功能外,你还可以让Eclipse ...

  2. linux下如何查看服务器的硬件配置信息

    性能测试时一定要确定测试环境和的硬件配置.软件版本配置,保证和线上一致,才更接近真实环境. 那么linux下如何查看服务器的硬件配置信息?? 一.查看cpu信息 1.所有信息 lscpu [root@ ...

  3. WebFilter 在springBoot工程中不起作用

    [1]@ServletComponentScan 必须有一个注解将带有@WebFilter的类包含进去. [2]自定义 FiltersConfig extends WebMvcConfigurerAd ...

  4. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-完整的测试类,含依赖测试(15)

    ddt.依赖测试.断言.测试数据写回 # -*- coding: utf-8 -*- # @Time : 2020/2/12 23:07 # @File : test_class_15.py # @A ...

  5. HTML name、id、class 的区别

    转载: 在一个页面中,有许多的控件(元素或标签).为了更方便的操作这些标签,就需要给这些标签标识一个身份牌. 目录 1. name :指定标签的名称. 2. id :指定标签的唯一标识. 3. cla ...

  6. jmeter压测遇到的问题

    一.今天压力测试时,开始12秒后出现了很多异常, 都是 java.net.NoRouteToHostException: Cannot assign requested address. 1.首先我这 ...

  7. java增强型for循环

    http://blog.csdn.net/itmyhome1990/article/details/8797005

  8. 正负小数js正则表达式

    var reg = /^(([1-9]\d+(.[0-9]{1,4})?|\d(.[0-9]{1,4})?)|([-]([1-9]\d+(.[0-9]{1,4})?|\d(.[0-9]{1,4})?) ...

  9. 杂谈php之什么是cgi,fastcgi,fpm,cli,mod

    杂谈PHP极少关注的问题 本话题来自于我使用PHP进行网页爬虫的一次经历.对于一个web开发者来说,PHP解释器本身却知之甚小,实在是惭愧呐! 首先这个话题要从几个提问开始. PHP是什么? 外文名: ...

  10. MyBatis if test 传入一个数字进行比较报错 There is no getter for property named 'userState' in 'class java.lang.Integer'

    在写MyBatis映射文件中,我要传入一个 int 类型的参数,在映射文件中用 'test' 中进行比较,我花了很长时间百度,发现都是不靠谱的方法,有把数字在比较时转成字符串用 equals 比较的. ...