美文网首页
MyBatis InsertAndget

MyBatis InsertAndget

作者: Doooook | 来源:发表于2020-07-22 23:04 被阅读0次

    Role.java

    @Data
    public class Role {
        private Integer id;
    
        private String roleName;
    
        private String note;
    
        private Byte status;
    
        private Date created;
    
        private Date modified;
    
    }
    

    RoleMapper.java

    public interface RoleMapper {
      
        int insertAndGetOne(Role role);
    
        int insertAndGetTwo(Role role);
    
        int insertAndGetThree(Role role);
    }
    

    RoleMapper.xml

    <!-- 插入后获取主键 -->
      <insert id="insertAndGetOne" parameterType="com.pengjs.kkb.mybatis.model.Role" useGeneratedKeys="true" keyProperty="id">
        insert into role (role_name, note)
        values (#{roleName,jdbcType=VARCHAR}, #{note,jdbcType=VARCHAR})
      </insert>
    
      <insert id="insertAndGetTwo" parameterType="com.pengjs.kkb.mybatis.model.Role">
        <selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER">
          SELECT LAST_INSERT_ID()
        </selectKey>
        insert into role (role_name, note)
        values (#{roleName,jdbcType=VARCHAR}, #{note,jdbcType=VARCHAR})
      </insert>
    
      <!--
      在实际工作中没有我们想象的那么简单,需要根据一些特殊的关系设置ID的值,假设我们取消表role的ID的自增规则,我们的要求是:
      如果表role中没有记录,则我们需要设置ID=1,否则我们就取最大的ID加2,来设置新的主键,对于一些特殊要求,MyBatis也提供了
      对应的方法。
      -->
      <insert id="insertAndGetThree" parameterType="com.pengjs.kkb.mybatis.model.Role">
        <selectKey keyProperty="id" resultType="java.lang.Integer" order="BEFORE">
            select if(max(id) is null, 1, max(id) + 2) as newId from role
        </selectKey>
        insert into role (id, role_name, note)
        values (#{id,jdbcType=INTEGER}, #{roleName,jdbcType=VARCHAR}, #{note,jdbcType=VARCHAR})
      </insert>
    

    测试

        @Test
        public void testInsertAndGet() {
            Role role = new Role();
            role.setRoleName("admin");
            role.setNote("管理员");
            int insertAndGetOne = roleMapper.insertAndGetOne(role);
            System.out.println(role);
            role.setRoleName("common");
            role.setNote("普通员工");
            int insertAndGetTwo = roleMapper.insertAndGetTwo(role);
            System.out.println(role);
            role.setRoleName("common1");
            role.setNote("普通员工1");
            int insertAndGetThree = roleMapper.insertAndGetThree(role);
            System.out.println(role);
        }
    

    相关文章

      网友评论

          本文标题:MyBatis InsertAndget

          本文链接:https://www.haomeiwen.com/subject/kfuxlktx.html