1、如何使用BaseMapper进行数据库的操作。
2、使用BaseMapper进行插入实体时如何让UUID的主键自动生成。
Student实体类,其中id属性主键为UUID
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实体类,用户从页面接收参数
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的增强功能。
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业务接口类
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接口注入其中。
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类,实现前端和后台的交互。自动注入学生业务实现类。
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文件
<?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值进行比较。

浙公网安备 33010602011771号