一、设计用户相关实体类
积分等级类:
@Entity
public class UserGrade implements Serializable{
private static final long serialVersionUID = 552495765344987180L;
private long gradeid;
/**积分**/
private long score=BaseConfig.getInitScore(); //初始化积分为100
/**等级**/
private int grade;
private User user ;
/**荣誉称号*/
private String honour ;
private int solvecount=0;
@OneToOne(cascade={CascadeType.REFRESH}) @JoinColumn(name="userid")
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Column
public int getSolvecount() {
return solvecount;
}
public void setSolvecount(int solvecount) {
this.solvecount = solvecount;
}
@Id @GeneratedValue
public long getGradeid() {
return gradeid;
}
public void setGradeid(long gradeid) {
this.gradeid = gradeid;
}
public long getScore() {
return score;
}
public void setScore(long score) {
this.score = score;
}
@Column(length=5)
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = IntegralGrade.getInstance().getGrade(this.getScore());
}
@Transient
public String getHonour() {
return honour;
}
public void setHonour(String honour) {
this.honour = IntegralGrade.getInstance().getHonour(this.getGrade());
}
}
知识提示:@GeneratedValue表示由jpa自动选择标识字段生成策略; @OneToOne(cascade={CascadeType.REFRESH}) @JoinColumn(name="userid") 与User类一对一关系,级联刷新,维护字段是userid;@Transient不与数据库表字段进行映射.
二、接口类设计
说明:Service具体实现类交给了Spring容器管理,通过注解方式或XML配置文件的方式将其注入到相应的接口,这样就实现了接口与实现分离的效果,便于系统日后的维护与升级。本系统采用JPA注解方式实注入功能
BaseDaoImpl类的实现代码:
@Transactional
public abstract class BaseDaoImpl<T> implements BaseDao<T> {
private Class<T> entityClass = GenericsUtils.getSuperClassGenricType(this.getClass());
//注入一个实体管理器,spring会从EntityManagerFactory里得到一个
//EntityManager对象
@PersistenceContext(unitName="mydaxia")
protected EntityManager em;
public void delete(Serializable... ids) {
for(Serializable id :ids){
em.remove(em.getReference(this.entityClass, id));
}
}
@Transactional(propagation=Propagation.NOT_SUPPORTED)
public T find(Serializable entityId) {
return em.find(this.entityClass, entityId);
}
@Transactional(propagation=Propagation.NOT_SUPPORTED)
public T getReference(Serializable entityId){
return em.getReference(this.entityClass, entityId);
}
public void save(T entity) {
em.persist(entity);
}
public void update(T entity) {
//游离状态下更新
em.merge(entity);
}
@Transactional(propagation=Propagation.NOT_SUPPORTED)
public List<T> getDatas() {
String entityName = getEntityName(this.entityClass);
return em.createQuery("from "+entityName).getResultList();
}
/**
* 获取实体类简单名称
* @param <E>
* @param entityClass
* @return
*/
private static <E> String getEntityName(Class<E> entityClass) {
String entityName = entityClass.getSimpleName();//类的简单类名
return entityName;
}
}
知识提示: 对于只用于读取数据的业务方法,一般不要开启事务,因为开启事务会对执行效率产生影响(需要时间).GenericsUtils.getSuperClassGenricType(this.getClass()),GenericsUtils是一个工具类,此方法是获取当前类的类实例,即Class实例.
三、测试CURD方法
public class CURDTest {
private static ApplicationContext act = null;
private static UserService userService = null;
private static UserRoleService userRoleService=null;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
act = new ClassPathXmlApplicationContext("beans.xml");
userService = (UserService)act.getBean("userServiceBean");
userRoleService=(UserRoleService)act.getBean("userRoleServiceBean");
}
@Test
public void saveUser(){
User user = new User();
user.setUsername("test");
user.setPassword("123456");
user.setEmail("andyeveny@126.com");
user.setUserrole(userRoleService.find("user"));
userService.save(user);
}
@Test
public void saveUserRoles(){
UserRole userRole=new UserRole();
userRole.setName("普通用户");
userRole.setSn("user");
userRoleService.save(userRole);
}
}
- 大小: 28.9 KB
- 大小: 16.2 KB
分享到:
相关推荐
跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟我一起写Makefile跟...
跟我一起写Makefile-陈皓.pdf
NULL 博文链接:https://yulon.iteye.com/blog/592455
跟我一起写 Makefile跟我一起写 Makefile跟我一起写 Makefile
陈皓大佬的博客最新版跟我一起写Makefile.pdf
跟我一起写makefile
跟我一起写Makefile Makefile学习
跟我一起写 Makefile.doc 跟我一起写 Makefile.doc 跟我一起写 Makefile.doc 跟我一起写 Makefile.doc 跟我一起写 Makefile.doc 跟我一起写 Makefile.doc
跟我一起写 Makefile 作者:陈皓 整理:祝冬华 来源网络,希望能与大家分享这份学习资料,资源分数也设置了最低值,如有侵权,请联系我删除文件。 第一部分、概述 (6) 第二部分、关于程序的编译和链接 (6) 第三部分...
跟我一起写 Makefile.pdf
5积分即可下载,为你为我为大家
跟我一起写makefile
make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样...
Makefile 跟我一起写Makefile;Makefile 跟我一起写Makefile;Makefile 跟我一起写Makefile