天天看點

16.職位管理後端接口設計

  1. 把Position實體類裡面的createdate屬性的date改成大寫的Date并修改該屬性的getter和setter方法
public class Position implements Serializable {
    private Integer id;
 
    /**
     * 職位
     */
    private String name;
 
    private Date createDate;
 
    private Boolean enabled;
           
  1. 把PositionMapper.xml裡面和createdate相關的全部修改成createDate
    16.職位管理後端接口設計
  2. 在controller包裡面建立system包,再在system包裡面建立basic包,再在basic包裡面建立PositionController類,在定義PositionController類的接口的時候,一定要與資料庫的menu中的url位址到一緻,不然會出現沒有權限通路的問題
@RestController
@RequestMapping("/system/basic/pos")
public class PositionController {
 
    @Autowired
    PositionService positionService;
 
    @GetMapping("/")
    public List<Position> getAllPositions(){
        return positionService.getAllPositions();
    }
   
}
           

PositionService類

@Service
public class PositionService {
 
    @Autowired
    PositionMapper positionMapper;
 
    public List<Position> getAllPositions() {
        return positionMapper.getAllPositions();
    }
}
           

PositionMapper接口

@Repository
public interface PositionMapper {
    int deleteByPrimaryKey(Integer id);
 
    int insert(Position record);
 
    int insertSelective(Position record);
 
    Position selectByPrimaryKey(Integer id);
 
    int updateByPrimaryKeySelective(Position record);
 
    int updateByPrimaryKey(Position record);
 
    List<Position> getAllPositions();
}
           

PositionMapper.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.lqg.vhr.mapper.PositionMapper">
  <resultMap id="BaseResultMap" type="com.lqg.vhr.model.Position">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="createDate" jdbcType="TIMESTAMP" property="createDate" />
    <result column="enabled" jdbcType="BIT" property="enabled" />
  </resultMap>
  <sql id="Base_Column_List">
    id, `name`, createDate, enabled
  </sql>
  <select id="getAllPositions" resultMap="BaseResultMap">
    select * from position;
  </select>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from position
    where id = #{id,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from position
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.lqg.vhr.model.Position">
    insert into position (id, `name`, createDate, 
      enabled)
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{createDate,jdbcType=TIMESTAMP}, 
      #{enabled,jdbcType=BIT})
  </insert>
  <insert id="insertSelective" parameterType="com.lqg.vhr.model.Position">
    insert into position
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="name != null">
        `name`,
      </if>
      <if test="createDate != null">
        createDate,
      </if>
      <if test="enabled != null">
        enabled,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=INTEGER},
      </if>
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="createDate != null">
        #{createDate,jdbcType=TIMESTAMP},
      </if>
      <if test="enabled != null">
        #{enabled,jdbcType=BIT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.lqg.vhr.model.Position">
    update position
    <set>
      <if test="name != null">
        `name` = #{name,jdbcType=VARCHAR},
      </if>
      <if test="createDate != null">
        createDate = #{createDate,jdbcType=TIMESTAMP},
      </if>
      <if test="enabled != null">
        enabled = #{enabled,jdbcType=BIT},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.lqg.vhr.model.Position">
    update position
    set `name` = #{name,jdbcType=VARCHAR},
      createDate = #{createDate,jdbcType=TIMESTAMP},
      enabled = #{enabled,jdbcType=BIT}
    where id = #{id,jdbcType=INTEGER}
  </update>
</mapper>
           

打開Postman測試查詢所有的position,效果如下圖:

16.職位管理後端接口設計

再把position的增删改三個接口也給寫一下

PositionController

@RestController
@RequestMapping("/system/basic/pos")
public class PositionController {
 
    @Autowired
    PositionService positionService;
 
    @GetMapping("/")
    public List<Position> getAllPositions(){
        return positionService.getAllPositions();
    }
 
    @PostMapping("/")
    public RespBean addPosition(@RequestBody Position position){
        if (positionService.addPosition(position)==1){
         return RespBean.ok("添加成功!");
        }
        return RespBean.error("添加失敗!");
    }
 
    @PutMapping("/")
    public RespBean updatePositions(@RequestBody Position position){
        if (positionService.updatePositions(position)==1){
            return RespBean.ok("修改成功!");
        }
        return RespBean.error("修改失敗!");
 
    }
 
    @DeleteMapping("/{id}")
    public RespBean deletePositionById(@PathVariable Integer id){
        if(positionService.deletePositionById(id)==1){
            return RespBean.ok("删除成功!");
        }
        return RespBean.error("删除失敗");
    }
}
           

PositionService

@Service
public class PositionService {
 
    @Autowired
    PositionMapper positionMapper;
 
    public List<Position> getAllPositions() {
        return positionMapper.getAllPositions();
    }
 
    public Integer addPosition(Position position) {
        position.setEnabled(true);
        position.setCreateDate(new Date());
        return positionMapper.insertSelective(position);
    }
 
    public Integer updatePositions(Position position) {
        return positionMapper.updateByPrimaryKeySelective(position);
    }
 
    public Integer deletePositionById(Integer id) {
        return positionMapper.deleteByPrimaryKey(id);
    }
}
           

PositionMapper接口和PositionMapper.xml和前面那個是一樣的,測試的添加效果如下圖所示:

16.職位管理後端接口設計
16.職位管理後端接口設計
16.職位管理後端接口設計