mybatis (一)对象的查询

才开始接触mybaties 甚是尴尬,很简单的东西都不会做。

一、对象的查询

问题:一个类中存在一个对象,需要进行查询所有数据,查询查不出来对象的属性。需要在关联查询对象属性的字段。

代码如下:

bean:

/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.thinkgem.jeesite.modules.kaoqin.workyears.entity;

import com.thinkgem.jeesite.modules.sys.entity.User;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.hibernate.validator.constraints.Length;

import com.thinkgem.jeesite.common.persistence.DataEntity;

/**
 * 工龄表Entity
 * @author xl
 * @version 2018-10-17
 */
public class TscUserYear extends DataEntity<TscUserYear> {
	
	private static final long serialVersionUID = 1L;
	private User user;		// 用户
	private Date enterCompnyDate;		// 加入公司时间
	private int workYears;		// 工龄
	
	public TscUserYear() {
		super();
	}

	public TscUserYear(String id){
		super(id);
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getEnterCompnyDate() {
		return enterCompnyDate;
	}

	public void setEnterCompnyDate(Date enterCompnyDate) {
		this.enterCompnyDate = enterCompnyDate;
	}
	
	@Length(min=0, max=3, message="工龄长度必须介于 0 和 3 之间")
	public int getWorkYears() {
		return workYears;
	}

	public void setWorkYears(int workYears) {
		this.workYears = workYears;
	}
	
}

java:

package com.thinkgem.jeesite.modules.kaoqin.workyears.service;

import java.util.Date;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.modules.kaoqin.workyears.dao.TscUserYearDao;
import com.thinkgem.jeesite.modules.kaoqin.workyears.entity.TscUserYear;
import com.thinkgem.jeesite.modules.sys.entity.User;

/**
 * 轮询时间设置工龄信息
 */
public class WorkYearsTimerTaskQuartz {
	private static long DATETIME = 1000 * 60 * 60 * 24 ;
	private static Logger logger = LoggerFactory.getLogger(WorkYearsTimerTaskQuartz.class);
	
	@Autowired
	private TscUserYearDao userYearsDao;

	public void run(){
		List<TscUserYear> list= userYearsDao.findAllList();
		Date currDate = new Date();
		for (TscUserYear userYear : list) {
			String u = userYear.getUser().getName();
			Date enterDate = userYear.getEnterCompnyDate();
			long workTime =  DateUtils.dateToLong(currDate) -  DateUtils.dateToLong(enterDate);		
			userYear.setWorkYears(workYear(workTime));			
//			userYear.setUser(u);
			userYearsDao.update(userYear);
			logger.debug(userYear.getUser().getName() + "已经工作了" + workYear(workTime) + "年了,数据更新成功!");
		}
		
	}

	private int workYear(long workTime){
		long date = workTime/(DATETIME);
		int work = (int) (date / 365);
		return work;
	}
	
}

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.thinkgem.jeesite.modules.kaoqin.workyears.dao.TscUserYearDao">
    
	<sql id="tscUserYearColumns">
		a.id AS "id",
		a.user_id AS "user",
		a.enter_compny_date AS "enterCompnyDate",
		a.work_years AS "workYears",
		u2.name AS "user.name",
		u2.id AS "user.id"
	</sql>
	
	<sql id="tscUserYearJoins">
		LEFT JOIN sys_user u2 ON u2.id = a.user_id
	</sql>
    
	<select id="get" resultType="TscUserYear">
		SELECT 
			<include refid="tscUserYearColumns"/>
		FROM tsc_user_year a
		<include refid="tscUserYearJoins"/>
		WHERE a.id = #{id}
	</select>
	
	<select id="findList" resultType="TscUserYear">
		SELECT 
			<include refid="tscUserYearColumns"/>
		FROM tsc_user_year a
		<include refid="tscUserYearJoins"/>
		<where>
			1 = 1
			<if test="user != null and user!='' ">
				and a.user_id = #{user.id}
			</if>
		</where>
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
			</otherwise>
		</choose>
	</select>
	
	<select id="findAllList" resultType="TscUserYear">
		SELECT 
			<include refid="tscUserYearColumns"/>
		FROM tsc_user_year a
		<include refid="tscUserYearJoins"/>
		<where>
			
		</where>		
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
			</otherwise>
		</choose>
	</select>
	
	<insert id="insert">
		INSERT INTO tsc_user_year(
			id,
			user_id,
			enter_compny_date,
			work_years
		) VALUES (
			#{id},
			#{user.id},
			#{enterCompnyDate},
			#{workYears}
		)
	</insert>
	
	<update id="update">
		UPDATE tsc_user_year SET 	
			user_id = #{user.id},
			enter_compny_date = #{enterCompnyDate},
			work_years = #{workYears}
		WHERE id = #{id}
	</update>
	
	<update id="delete">
		DELETE FROM tsc_user_year
		WHERE id = #{id}
	</update>
	
</mapper>

猜你喜欢

转载自blog.csdn.net/qq_37538698/article/details/83182133
今日推荐