Mybatis adds data and returns the primary key

1.controller

public class DemandController {
    
    

    @Autowired
    private DemandService demandService;

    @PostMapping("/add")
    public R add(@RequestBody Demand demand, HttpServletRequest request){
    
    
//        Principal userPrincipal = request.getUserPrincipal();
//        String userName = userPrincipal.getName();
        Demand result = demandService.add(demand, "admin");
        if(null != result){
    
    
            return R.ok(result, "提交成功!");
        }else{
    
    
            return R.fail("提交失败!");
        }
    }

    @GetMapping("/{id}}")
    public R selectById(@PathVariable Long id){
    
    
        return R.ok(demandService.selectById(id), "查询成功!");
    }

    @PostMapping
    public R selectDemands(@RequestBody Demand demand){
    
    
        return R.ok(demandService.selectDemands(demand), "查询成功!");
    }
}

2. service

@Service
public class DemandServiceImpl implements DemandService {
    
    

    @Autowired
    private DemandMapper demandMapper;
    @Autowired
    private SysUserService userService;

    @Override
    @Transactional
    public Demand add(Demand demand, String userName) {
    
    
        LoginUser loginUser = userService.selectUserByUserName(userName);
        demand.setUserId(loginUser.getSysUser().getUserId());
        demand.setCreateBy(userName);
        int rows = demandMapper.add(demand);
        return rows > 0 ? demand : null;
    }

    @Override
    public Demand selectById(Long id) {
    
    
        return demandMapper.selectById(id);
    }

    @Override
    public List<Demand> selectDemands(Demand demand) {
    
    
        return demandMapper.selectDemands(demand);
    }

    @Override
    @Transactional
    public int delById(Long id) {
    
    
        return 0;
    }

    @Override
    @Transactional
    public int delByIds(List<Long> ids) {
    
    
        return 0;
    }

    @Override
    @Transactional
    public Demand updateDemand(Demand demand) {
    
    
        return null;
    }
}

3. mapper

public interface DemandMapper {
    
    

    int add(Demand demand);

    Demand selectById(Long id);

    List<Demand> selectDemands(Demand demand);

//    int delById(Long id);
//
//    int delByIds(List<Long> ids);
//
//    Demand updateDemand(Demand demand);

}

4. 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.guanwei.dao.DemandMapper">

    <resultMap id="DemandResult" type="com.guanwei.model.Demand">
        <id     property="id"       column="id"      />
        <result property="userId"       column="user_id"      />
        <result property="headName"     column="head_name"    />
        <result property="headGender"     column="head_gender"    />
        <result property="headPhone"     column="head_phone"    />
        <result property="summarize"        column="summarize"        />
        <result property="filePath"  column="file_path"  />
        <result property="type"          column="type"          />
        <result property="solve"          column="solve"          />
        <result property="createBy"     column="create_by"    />
        <result property="createTime"   column="create_time"  />
        <result property="updateBy"     column="update_by"    />
        <result property="updateTime"   column="update_time"  />
        <result property="remark"       column="remark"       />
    </resultMap>

    <sql id="selectDemand">
        select d.id, d.user_id, d.head_name, d.head_phone, d.summarize, d.file_path, d.type, d.solve,
        d.create_by, d.create_time, d.update_by, d.update_time, d.remark
        from demand d
    </sql>

    <insert id="add" parameterType="com.guanwei.model.Demand" useGeneratedKeys="true" keyProperty="id">
        insert into demand (
            <if test="id !=null and id !=0">id,</if>
            <if test="userId !=null and userId !=0">user_id,</if>
            <if test="headName !=null and headName !=''">head_name,</if>
            <if test="headPhone !=null and headPhone !=''">head_phone,</if>
            <if test="summarize !=null and summarize !=''">summarize,</if>
            <if test="filePath !=null and filePath !=''">file_path,</if>
            <if test="type !=null and type !=''">type,</if>
            <if test="solve !=null and solve !=''">solve,</if>
            <if test="createBy != null and createBy != ''">create_by,</if>
            <if test="remark != null and remark != ''">remark,</if>
            create_time
        ) values (
            <if test="id !=null and id !=0">#{id},</if>
            <if test="userId !=null and userId !=0">#{userId},</if>
            <if test="headName !=null and headName !=''">#{headName},</if>
            <if test="headPhone !=null and headPhone !=''">#{headPhone},</if>
            <if test="summarize !=null and summarize !=''">#{summarize},</if>
            <if test="filePath !=null and filePath !=''">#{filePath},</if>
            <if test="type !=null and type !=''">#{type},</if>
            <if test="solve !=null and solve !=''">#{solve},</if>
            <if test="createBy != null and createBy != ''">#{createBy},</if>
            <if test="remark != null and remark != ''">#{remark},</if>
            sysdate()
        )
    </insert>

    <select id="selectById" parameterType="Long" resultMap="DemandResult">
        <include refid="selectDemand"/>
        where id=#{id}
    </select>

    <select id="selectDemands" parameterType="com.guanwei.model.Demand" resultMap="DemandResult">
        <include refid="selectDemand"/>
        where 1=1
        <if test="headName != null and headName != ''">
            AND d.head_name like concat('%', #{headName}, '%')
        </if>
        <if test="headPhone != null and headPhone != ''">
            AND d.head_phone like concat('%', #{headPhone}, '%')
        </if>
        <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
            AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
        </if>
        <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
            AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
        </if>
        <if test="type != null and type != ''">
            AND type = #{type}
        </if>
        <if test="solve != null and solve != ''">
            AND solve = #{solve}
        </if>
        <if test="createBy != null and createBy != ''">
            AND createBy = #{createBy}
        </if>
        <!-- 数据范围过滤 -->
        ${params.dataScope}
    </select>

</mapper>

4. Analysis

4.1 Back to the primary key?

Insert picture description here
Int can't directly be the primary key, the primary key can only be assigned to the id of the object; if
you want to get it, getId()!!!
Insert picture description here

Guess you like

Origin blog.csdn.net/weixin_42096620/article/details/111566044