zoukankan      html  css  js  c++  java
  • Mybatis-Plus的BaseMapper的用法

    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值进行比较。

  • 相关阅读:
    elementui form-item中多个字段校验
    Element-ui的 el-form 使用 v-if校验失灵问题
    fullcalendar title换行
    html拼接
    element-ui cascader 省市区 动态加载
    切换vue项目初始化路径
    用JavaScript获取当月第一天和最后一天
    小宝和小黑
    python目录
    3
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/11772955.html
Copyright © 2011-2022 走看看