实体类参数自动赋值

实体类参数自动赋值

前言

日常开发我们会遇到一个问题,在返回实体类时,时间格式是Date类型,但是接口开发时前端往往需要的是String类型,这时候如果使用相对原生的方式可以在服务层进行转换,加上使用@Transient注解去绑定一些不与数据库绑定的属性去携带参数,但是在使用JPA自带的分页,或者一些结果集封装的形式进行传参时,就无法进行数据转换赋值,这时候就可以通过改变属性的get方法去设置参数

代码

package com.yiyun.member.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.GenericGenerator;


@Entity
@Table(name = "commodity")
@DynamicInsert
@NamedQuery(name = "Commodity.findAll", query = "SELECT s FROM Commodity s")
public class Commodity implements Serializable {

	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	
	@Column(name = "create_time")
    private Date createTime;
	
	@Column(name = "open_time")
    private Date openTime;
	
	@Column(name = "over_time")
    private Date overTime;
    
	@Transient
	private String overTimeStr;
	
	@Transient
	private String openTimeStr;
	
	@Transient
	private String createTimeStr;

	public Date getCreateTime() {
		return createTime;
	}

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

	public Date getOpenTime() {
		return openTime;
	}

	public void setOpenTime(Date openTime) {
		this.openTime = openTime;
	}

	public Date getOverTime() {
		return overTime;
	}

	public void setOverTime(Date overTime) {
		this.overTime = overTime;
	}
	//初始化赋值
	public String getOverTimeStr() {
		return overTimeStr = overTime==null?"":new SimpleDateFormat("yyyy-MM-dd HH:mm").format(overTime);
	}

	public void setOverTimeStr(String overTimeStr) {
		this.overTimeStr =overTimeStr;
	}

	public String getOpenTimeStr() {
		return openTimeStr = openTime == null?"":new SimpleDateFormat("yyyy-MM-dd HH:mm").format(openTime);
	}

	public void setOpenTimeStr(String openTimeStr) {
		this.openTimeStr = openTimeStr;
	}

	public String getCreateTimeStr() {
		return createTimeStr = createTime == null?"":new SimpleDateFormat("yyyy-MM-dd HH:mm").format(createTime);
	}

	public void setCreateTimeStr(String createTimeStr) {
		this.createTimeStr = createTimeStr;
	}
	
}

这里代码return createTimeStr = createTime == null?"":new SimpleDateFormat(“yyyy-MM-dd HH:mm”).format(createTime); 方式去赋值,通过三元运算符去赋值,将实体类其他的参数赋值给自己。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
概况: 1、 适用于.net项目,基于MVC架构模式 2、 按照数据库结构生成基础开发类库 3、 数据库支持SQL2000和SQL2005两个版本 4、 类库为分层框架工厂模式,依次分为:数据库交互层(SqlHelper)、业务实体层(Model)、数据处理层(DAL)、数据接口层(IDAL)、数据工厂层(DALFactory)、业务层(BLL)6层 5、 业务实体层与业务层直接与UI交互 6、 生成类库的同时系统自动生成相应的存储过程脚本(Proc文件夹)。 一、配置 打开SQLHelper.cs文件,将相应的数据库连接配置信息添加到配置文件中即可。 二、存储过程 打开Proc文件夹,将Proc.sql在相应SQL命令执行窗口中打开,然后执行即可。 二、业务实体实体类名为数据表名称(首字母大写)加上Model后缀组成,类属性为相应字段名称(首字母大写),包含相应构造函数。 三、业务层 以下介绍以CalendarNotes表为例,主键字段为id。 1、插入数据 public string Insert(CalendarNotesModel model) 插入单条数据,即业务实体对象 public string Insert(List list) 插入多条数据,即泛型集合(集合元素为业务实体对象) public string Insert(CalendarNotesModel model, object objTrans) 在指定事务控制中插入单条数据 public string Insert(List list, object objTrans) 在指定事务控制中插入多条数据 2、插入并返回所插入的记录的自增ID 适用范围为相应数据表中存在标识字段,可同步获取到新插入数据的标识字段值。 public string Insert_Identity(CalendarNotesModel model) 插入单条数据 public string Insert_Identity(CalendarNotesModel model, object objTrans) 在指定事务控制中插入单条数据 3、更新数据 public string Update(CalendarNotesModel model) 更新单条数据,使用过程是:先取出相应业务实体,然后修改字段值(非主键字段),然后调用此方法更新数据库。 public string Update(CalendarNotesModel model, object objTrans) 在指定事务控制中更新单条数据,调用过程同上。 4、删除数据 public string Delete(string id) 根据主键删除单条数据。 public string Delete(CalendarNotesModel model) 根据指定条件批量删除数据,调用过程:先实例化一个CalendarNotesModel对象,然后设置删除条件(即给相应属性字段赋值),然后调用此方法。 public string Delete(string id, object objTrans) 在指定事务中删除单条数据。 public string Delete(CalendarNotesModel model, object objTrans) 在指定事务中批量删除数据。 5、查询数据 public List SelectAll() 查询出当前数据表所有数据。 public CalendarNotesModel Select(string id) 根据主键查询单条数据。 public List Select(CalendarNotesModel model, string querytype) 根据指定条件查询数据集合,调用过程:先实例化一个CalendarNotesModel对象,然后设置筛选条件(即给相应属性字段赋值),然后调用此方法,可通过querytype参数设置筛选出的数据集的排序,如” UpdateTime DESC”,默认可为空(””)。 public CalendarNotesModel Select(string id, object objTrans) 在指定事务控制中根据主键查询单条数据。 public List Select(CalendarNotesModel model, string querytype, object objTrans) 在指定事务控制中根据指定条件查询数据集合。
在Java中,我们可以使用多种方式将一个实体类的值赋给另一个不同的实体类。 一种常见的方式是使用构造函数。我们可以在目标实体类中定义一个带有源实体类类型的构造函数,并通过参数传递源实体类的对象。然后,在构造函数内部,将源实体类对象的属性值赋给目标实体类的相应属性。这样,我们就可以通过创建目标实体类的对象,将源实体类的属性值赋给目标实体类的对象。 另一种常见的方式是使用setter方法。我们可以在目标实体类中定义与源实体类属性相同的setter方法。然后,通过获取源实体类的对象和目标实体类的对象,使用源实体类的getter方法获取属性值,并通过目标实体类的setter方法将值赋给目标实体类的属性。 以下是一个示例代码,演示了如何将一个Student类的属性值赋给一个Person类的对象: ``` public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } } public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } } public class Main { public static void main(String[] args) { Student student = new Student("John", 20); Person person = new Person(); person.setName(student.getName()); person.setAge(student.getAge()); System.out.println("Person name: " + person.getName()); System.out.println("Person age: " + person.getAge()); } } ``` 在上述示例中,我们创建了一个Student类和一个Person类。然后,我们实例化一个Student对象,并将其name和age属性值赋给一个Person对象。最后,我们输出Person对象的name和age属性值,验证赋值是否成功。 以上就是将两个不同的实体类进行赋值的一种常见方式。当然,具体的实现方式可能因实际需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值