• 前置条件

    在开发之前,请确保

    介绍

    demo需涉及到infra层的 Mapper 类以及与数据库对应的DTO类。

    编写与数据库表对应的DTO

    指定对应表

    属性规范

    属性的的类型与字段的 type 对应

    注意:BigDecimal 在计算、比较方面的特殊性

    所有的主键字段都需要用@Id标注

    非数据库字段

    UserDTO.java 代码

    package io.choerodon.todo.infra.dto;
    
    // 省略 import
    
    @Table(name = "todo_user")
    public class UserDTO extends BaseDTO {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY) //对于自增张、序列(SEQUENCE)类型的主键,需要添加该注解
        private Long id;
        private String employeeName;
        private String employeeNumber;
        private String email;
        
        // 省略get和set方法
        
    }
    

    TaskDTO.java 代码

    package io.choerodon.todo.infra.dto;
    
    // 省略 import
    
    @Table(name = "todo_task")
    public class TaskDTO extends BaseDTO {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private Long employeeId;
        private String state;
        private String taskNumber;
        private String taskDescription;
        
        // 省略get和set方法
    
    }
    

    编写Mapper

    Mapper接口类

    Mapper.xml

    UserMapper.java 代码

    package io.choerodon.todo.infra.mapper;
    
    import io.choerodon.mybatis.common.Mapper;
    import io.choerodon.todo.infra.dto.UserDTO;
    
    public interface UserMapper extends Mapper<UserDTO> {
    }
    

    TaskMapper.java 代码

    package io.choerodon.todo.infra.mapper;
    
    // 省略 import
    
    public interface TaskMapper extends Mapper<TaskDTO> {
        TaskDTO queryByTaskNumber(@Param("taskNumber") String taskNumber);
    }
    

    TaskMapper.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="io.choerodon.todo.infra.mapper.TaskMapper">
        <select id="queryByTaskNumber" resultType="io.choerodon.todo.infra.dto.TaskDTO">
            SELECT 
            *
            FROM 
            todo_task
            WHERE
            task_number=#{taskNumber} limit 1
        </select>
    </mapper>