spark 大型项目实战(十一):用户访问session分析(十一) --使用注解进行字段转化

在之前开发的sessionFactory 中 如果字段的名称和数据库中字段名称不一致,是没有办法直接获取到值的,而且一直用map 操作也不是很方便,所以开发一个字段转换的注解进行数据库字段和model 中的字段进行映射。
首先创建一个注解

/**
 *  数据库中字段一般和 model
 *  字段名称不一样 所以这里定义一个主机来转换名称
 *  只需要将名称不一样的注解进行转换即可
 * @author : WChen129
 * @date : 2018-05-24
 */

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldName {
    String value();
}

下面创建一个task 的model

public class Task {
    @FieldName(value = "task_id")
    private long taskid;
    @FieldName(value = "task_name")
    private String taskName;
    @FieldName(value = "create_time")
    private String createTime;
    @FieldName(value = "start_time")
    private String startTime;
    @FieldName(value = "finish_time")
    private String finishTime;
    @FieldName(value = "task_type")
    private String taskType;
    @FieldName(value = "task_status")
    private String taskStatus;
    @FieldName(value = "task_param")
    private String taskParam;

    public long getTaskid() {
        return taskid;
    }

    public void setTaskid(long taskid) {
        this.taskid = taskid;
    }

    public String getTaskName() {
        return taskName;
    }

    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getFinishTime() {
        return finishTime;
    }

    public void setFinishTime(String finishTime) {
        this.finishTime = finishTime;
    }

    public String getTaskType() {
        return taskType;
    }

    public void setTaskType(String taskType) {
        this.taskType = taskType;
    }

    public String getTaskStatus() {
        return taskStatus;
    }

    public void setTaskStatus(String taskStatus) {
        this.taskStatus = taskStatus;
    }

    public String getTaskParam() {
        return taskParam;
    }

    public void setTaskParam(String taskParam) {
        this.taskParam = taskParam;
    }

    @Override
    public String toString() {
        return "Task{" +
                "taskid=" + taskid +
                ", taskName='" + taskName + '\'' +
                ", createTime='" + createTime + '\'' +
                ", startTime='" + startTime + '\'' +
                ", finishTime='" + finishTime + '\'' +
                ", taskType='" + taskType + '\'' +
                ", taskStatus='" + taskStatus + '\'' +
                ", taskParam='" + taskParam + '\'' +
                '}';
    }
}

下面将上一遍中介绍的taskdao 重新改造一下

public interface ITaskDAO {

    /**
     * 根据主键查询任务
     * @param taskid 主键
     * @return 任务
     */
    Task findById(long taskid);

}
public class TaskDAOImpl implements ITaskDAO {

    /**
     * 根据主键查询任务
     * @param taskid 主键
     * @return 任务
     */
    @Override
    public Task findById(long taskid) {
        String sql = "select * from task where task_id=?";
        Object[] params = new Object[]{taskid};
        SessionFactory sessionFactory=SessionFactory.getSessionFactory();
        return   sessionFactory.queryForObject(sql,params,Task.class);
    }

}

下面写一个test 测试一下

public static void main(String[] args) {
        SessionFactory sessionFactory=SessionFactory.getSessionFactory();

        ITaskDAO taskDAO=new TaskDAOImpl();
        Task task=taskDAO.findById(10000001L);
        if(task!=null){
            System.out.println(task.getTaskName());
        }
    }

数据结果

test

欢迎关注,更多福利

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u012957549/article/details/80445725