服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Mybatis-Plus BaseMapper的用法详解

Mybatis-Plus BaseMapper的用法详解

2020-08-27 12:52金色的鱼儿 Java教程

这篇文章主要介绍了Mybatis-Plus BaseMapper的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、如何使用BaseMapper进行数据库的操作。

2、使用BaseMapper进行插入实体时如何让UUID的主键自动生成。

Student实体类,其中id属性主键为UUID

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
package com.huixiaoer.ant.api.model.bean;
 
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
 
public class Student {
  /**
   *
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database column student.id
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  @TableId(type= IdType.UUID)
  private String id;
 
  /**
   *
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database column student.user_name
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  private String userName;
 
  /**
   *
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database column student.age
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  private Integer age;
 
  /**
   *
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database column student.phone
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  private String phone;
 
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public Student(String id, String userName, Integer age, String phone) {
    this.id = id;
    this.userName = userName;
    this.age = age;
    this.phone = phone;
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public Student() {
    super();
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method returns the value of the database column student.id
   *
   * @return the value of student.id
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public String getId() {
    return id;
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method sets the value of the database column student.id
   *
   * @param id the value for student.id
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public void setId(String id) {
    this.id = id == null ? null : id.trim();
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method returns the value of the database column student.user_name
   *
   * @return the value of student.user_name
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public String getUserName() {
    return userName;
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method sets the value of the database column student.user_name
   *
   * @param userName the value for student.user_name
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public void setUserName(String userName) {
    this.userName = userName == null ? null : userName.trim();
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method returns the value of the database column student.age
   *
   * @return the value of student.age
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public Integer getAge() {
    return age;
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method sets the value of the database column student.age
   *
   * @param age the value for student.age
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public void setAge(Integer age) {
    this.age = age;
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method returns the value of the database column student.phone
   *
   * @return the value of student.phone
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public String getPhone() {
    return phone;
  }
 
  /**
   * This method was generated by MyBatis Generator.
   * This method sets the value of the database column student.phone
   *
   * @param phone the value for student.phone
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  public void setPhone(String phone) {
    this.phone = phone == null ? null : phone.trim();
  }
}

StudnetVI实体类,用户从页面接收参数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.huixiaoer.ant.api.model.vi;
 
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
 
@ApiModel(value = "student对象",description = "学生对象student")
public class StudentVI {
 
 
  /**
   *
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database column student.user_name
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  @ApiModelProperty(value="学生姓名",name="userName",required=true)
  private String userName;
 
  /**
   *
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database column student.age
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  @ApiModelProperty(value="年龄",name="age",required=true)
  private Integer age;
 
  /**
   *
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database column student.phone
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  @ApiModelProperty(value="手机号",name="phone",required=true)
  private String phone;
 
 
  public String getUserName() {
    return userName;
  }
 
  public void setUserName(String userName) {
    this.userName = userName;
  }
 
  public Integer getAge() {
    return age;
  }
 
  public void setAge(Integer age) {
    this.age = age;
  }
 
  public String getPhone() {
    return phone;
  }
 
  public void setPhone(String phone) {
    this.phone = phone;
  }
 
}

StudentPlusMapper接口类,实现BaseMapper用来实现Mybatis-Plus的增强功能。

?
1
2
3
4
5
6
7
8
package com.huixiaoer.ant.api.repository.mysql.mapper;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.huixiaoer.ant.api.model.bean.Student;
 
public interface StudentPlusMapper extends BaseMapper<Student> {
  //不需要实现,这时候就可以调用baseMapper的增删改查了
}

StudentService业务接口类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.huixiaoer.ant.api.service;
 
import com.huixiaoer.ant.api.model.bean.Student;
import com.huixiaoer.ant.api.model.bean.StudentExample;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectKey;
 
import java.util.List;
 
public interface StudentService {
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  long countByExample(StudentExample example);
 
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  int deleteByExample(StudentExample example);
 
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  @Insert({
    "insert into student (id, user_name, ",
    "age, phone)",
    "values (#{id,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, ",
    "#{age,jdbcType=INTEGER}, #{phone,jdbcType=VARCHAR})"
  })
  @SelectKey(statement="select uuid_short()", keyProperty="id", before=true, resultType=String.class)
  int insert(Student record);
 
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  int insertSelective(Student record);
 
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  List<Student> selectByExample(StudentExample example);
 
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  int updateByExampleSelective(@Param("record") Student record, @Param("example") StudentExample example);
 
  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table student
   *
   * @mbg.generated Thu Oct 31 14:09:39 CST 2019
   */
  int updateByExample(@Param("record") Student record, @Param("example") StudentExample example);
}

StudentServiceImpl业务接口实现类,这里将mybatis-plus的mapper接口注入其中。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.huixiaoer.ant.api.service.impl;
 
import com.huixiaoer.ant.api.model.bean.Student;
import com.huixiaoer.ant.api.model.bean.StudentExample;
import com.huixiaoer.ant.api.repository.mysql.mapper.StudentMapper;
import com.huixiaoer.ant.api.repository.mysql.mapper.StudentPlusMapper;
import com.huixiaoer.ant.api.service.StudentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
@Service
@Slf4j
public class StudentServiceImpl implements StudentService {
 
  @Autowired
  private StudentMapper studentMapper;
 
  @Autowired
  private StudentPlusMapper studentPlusMapper;
 
  @Override
  public long countByExample(StudentExample example) {
    return 0;
  }
 
  @Override
  public int deleteByExample(StudentExample example) {
    return 0;
  }
 
  @Override
  public int insert(Student record) {
    return studentPlusMapper.insert(record);
  }
 
  @Override
  public int insertSelective(Student record) {
    return studentMapper.insertSelective(record);
  }
 
  @Override
  public List<Student> selectByExample(StudentExample example) {
    return null;
  }
 
  @Override
  public int updateByExampleSelective(Student record, StudentExample example) {
    return 0;
  }
 
  @Override
  public int updateByExample(Student record, StudentExample example) {
    return 0;
  }
}

SchoolController类,实现前端和后台的交互。自动注入学生业务实现类。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.huixiaoer.ant.api.controller;
 
import com.huixiaoer.ant.api.common.constant.ResultCode;
import com.huixiaoer.ant.api.model.bean.Student;
import com.huixiaoer.ant.api.model.vi.StudentVI;
import com.huixiaoer.ant.api.service.impl.StudentServiceImpl;
import com.huixiaoer.ant.api.util.*;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.UUID;
 
/**
 * @author create by yiqiang.wu
 * @create 2019/06/12
 * @email yiqiang.wu@huixiaoer.com
 * @description 登录
 */
@Slf4j
@RestController
@Api(tags = "学校 相关接口")
public class SchoolController {
 
  @Autowired
  private StudentServiceImpl studentService;
 
  @Autowired
  private HttpServletRequest request;
 
  @ApiOperation(value = "增加学生信息")
  @PostMapping(value = "/insert/student")
  public CommonResult insertStudent(@RequestBody @ApiParam(name="学生对象",value="传入json格式",required=true) StudentVI studentVI) {
    try {
      Student student = new Student();
//      student.setId(UUID.randomUUID().toString());
      student.setUserName(studentVI.getUserName());
      student.setAge(studentVI.getAge());
      student.setPhone(studentVI.getPhone());
      studentService.insert(student);
    } catch (Exception e) {
      System.out.println(e);
      return CommonUtil.buildResponse(ResultCode.SYSTEM_ERROR, ResultCode.SYSTEM_ERROR_MSG);
    }
    return CommonUtil.buildResponse(ResultCode.SUCCESS, ResultCode.SUCCESS_MSG);
  }
 
}

补充一下Mybatis的xml文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
<?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.huixiaoer.ant.api.repository.mysql.mapper.StudentMapper">
 <resultMap id="BaseResultMap" type="com.huixiaoer.ant.api.model.bean.Student">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  <constructor>
   <arg column="id" javaType="java.lang.String" jdbcType="VARCHAR" />
   <arg column="user_name" javaType="java.lang.String" jdbcType="VARCHAR" />
   <arg column="age" javaType="java.lang.Integer" jdbcType="INTEGER" />
   <arg column="phone" javaType="java.lang.String" jdbcType="VARCHAR" />
  </constructor>
 </resultMap>
 <sql id="Example_Where_Clause">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  <where>
   <foreach collection="oredCriteria" item="criteria" separator="or">
    <if test="criteria.valid">
     <trim prefix="(" prefixOverrides="and" suffix=")">
      <foreach collection="criteria.criteria" item="criterion">
       <choose>
        <when test="criterion.noValue">
         and ${criterion.condition}
        </when>
        <when test="criterion.singleValue">
         and ${criterion.condition} #{criterion.value}
        </when>
        <when test="criterion.betweenValue">
         and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
        </when>
        <when test="criterion.listValue">
         and ${criterion.condition}
         <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
          #{listItem}
         </foreach>
        </when>
       </choose>
      </foreach>
     </trim>
    </if>
   </foreach>
  </where>
 </sql>
 <sql id="Update_By_Example_Where_Clause">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  <where>
   <foreach collection="example.oredCriteria" item="criteria" separator="or">
    <if test="criteria.valid">
     <trim prefix="(" prefixOverrides="and" suffix=")">
      <foreach collection="criteria.criteria" item="criterion">
       <choose>
        <when test="criterion.noValue">
         and ${criterion.condition}
        </when>
        <when test="criterion.singleValue">
         and ${criterion.condition} #{criterion.value}
        </when>
        <when test="criterion.betweenValue">
         and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
        </when>
        <when test="criterion.listValue">
         and ${criterion.condition}
         <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
          #{listItem}
         </foreach>
        </when>
       </choose>
      </foreach>
     </trim>
    </if>
   </foreach>
  </where>
 </sql>
 <sql id="Base_Column_List">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  id, user_name, age, phone
 </sql>
 <select id="selectByExample" parameterType="com.huixiaoer.ant.api.model.bean.StudentExample" resultMap="BaseResultMap">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  select
  <if test="distinct">
   distinct
  </if>
  <include refid="Base_Column_List" />
  from student
  <if test="_parameter != null">
   <include refid="Example_Where_Clause" />
  </if>
  <if test="orderByClause != null">
   order by ${orderByClause}
  </if>
 </select>
 <delete id="deleteByExample" parameterType="com.huixiaoer.ant.api.model.bean.StudentExample">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  delete from student
  <if test="_parameter != null">
   <include refid="Example_Where_Clause" />
  </if>
 </delete>
 <insert id="insertSelective" parameterType="com.huixiaoer.ant.api.model.bean.Student">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
   select uuid_short()
  </selectKey>
  insert into student
  <trim prefix="(" suffix=")" suffixOverrides=",">
   id,
   <if test="userName != null">
    user_name,
   </if>
   <if test="age != null">
    age,
   </if>
   <if test="phone != null">
    phone,
   </if>
  </trim>
  <trim prefix="values (" suffix=")" suffixOverrides=",">
   #{id,jdbcType=VARCHAR},
   <if test="userName != null">
    #{userName,jdbcType=VARCHAR},
   </if>
   <if test="age != null">
    #{age,jdbcType=INTEGER},
   </if>
   <if test="phone != null">
    #{phone,jdbcType=VARCHAR},
   </if>
  </trim>
 </insert>
 <select id="countByExample" parameterType="com.huixiaoer.ant.api.model.bean.StudentExample" resultType="java.lang.Long">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  select count(*) from student
  <if test="_parameter != null">
   <include refid="Example_Where_Clause" />
  </if>
 </select>
 <update id="updateByExampleSelective" parameterType="map">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  update student
  <set>
   <if test="record.id != null">
    id = #{record.id,jdbcType=VARCHAR},
   </if>
   <if test="record.userName != null">
    user_name = #{record.userName,jdbcType=VARCHAR},
   </if>
   <if test="record.age != null">
    age = #{record.age,jdbcType=INTEGER},
   </if>
   <if test="record.phone != null">
    phone = #{record.phone,jdbcType=VARCHAR},
   </if>
  </set>
  <if test="_parameter != null">
   <include refid="Update_By_Example_Where_Clause" />
  </if>
 </update>
 <update id="updateByExample" parameterType="map">
  <!--
   WARNING - @mbg.generated
   This element is automatically generated by MyBatis Generator, do not modify.
   This element was generated on Thu Oct 31 14:09:39 CST 2019.
  -->
  update student
  set id = #{record.id,jdbcType=VARCHAR},
   user_name = #{record.userName,jdbcType=VARCHAR},
   age = #{record.age,jdbcType=INTEGER},
   phone = #{record.phone,jdbcType=VARCHAR}
  <if test="_parameter != null">
   <include refid="Update_By_Example_Where_Clause" />
  </if>
 </update>
</mapper>

各种UUID生成策略,生成的UUID值进行比较。

Mybatis-Plus BaseMapper的用法详解

到此这篇关于Mybatis-Plus BaseMapper的用法详解的文章就介绍到这了,更多相关Mybatis-Plus BaseMapper内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/it-deepinmind/p/11772955.html

延伸 · 阅读

精彩推荐