Java 新建项目使用程序对新项目的各个实体 创建DaoDaoImplServiceServiceImpl层的文件

Posted Angel挤一挤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 新建项目使用程序对新项目的各个实体 创建DaoDaoImplServiceServiceImpl层的文件相关的知识,希望对你有一定的参考价值。

优化之后的步骤:

1.第一步 生成各层文件夹,并且创建GenericDao.java等基础dao【基础dao中涉及到的包名等自行更改】

2.第二步 生成各个实体对应的Dao等层文件

 

 

首先给出基本Dao层代码:【将这些类保存为文件,放在固定的位置】

GenericDao.java

  1 package com.agen.dao;
  2 
  3 import java.io.Serializable;
  4 import java.util.Collection;
  5 import java.util.List;
  6 import java.util.Map;
  7 
  8 import org.hibernate.Criteria;
  9 import org.hibernate.criterion.Criterion;
 10 import org.hibernate.criterion.DetachedCriteria;
 11 
 12 import com.github.pagehelper.PageInfo;
 13 
 14 
 15 public interface GenericDao<T, PK extends Serializable> {
 16     /**
 17      * 查询全部,可以排序
 18      * @param orderBy
 19      * @param isAsc
 20      * @return List<T>
 21      */
 22     public List<T> list(Criteria criteria);
 23 
 24     /**
 25      * 查询全部,可以排序
 26      * @param orderBy
 27      * @param isAsc
 28      * @return List<T>
 29      */
 30     public List<T> list(String orderBy, boolean isAsc);
 31     
 32     /**
 33      * 离线查询
 34      * @param criteria
 35      * @return List<T>
 36      */
 37     public List<T> list(DetachedCriteria criteria);
 38     
 39     /**
 40      * 根据Criteria查询条件,获取总数
 41      * @param criteria
 42      * @return int
 43      * @throws SecurityException 
 44      * @throws NoSuchFieldException 
 45      * @throws IllegalAccessException 
 46      * @throws IllegalArgumentException 
 47      */
 48     public int countAll(Criteria criteria);
 49     
 50     /**
 51      * 获取总数(默认为entityClass) 即查询总条数
 52      * @return int
 53      */
 54     public int countAll();
 55     
 56     /**
 57      * 根据I判断是否存在
 58      * @param id
 59      * @return boolean
 60      */
 61     public boolean exists(PK id);
 62     
 63     /**
 64      * 保存实体 
 65      * @param t 实体参数
 66      */
 67     public void save(T t);
 68 
 69     /**
 70      * 保存或者更新实体
 71      * @param t 实体
 72      */
 73     public void saveOrUpdate(T t);
 74 
 75     /**
 76      * 加载实体的通过load方法
 77      * @param id 实体的id
 78      * @return 查询出来的实体
 79      */
 80     public T load(PK id);
 81     
 82     /**
 83      * 合并实体 
 84      * @param entity
 85      */
 86     public void merge(T entity);
 87     
 88     /**
 89      * 查找全部
 90      */
 91     public List<T> findAll();
 92 
 93     /**
 94      * 通过get方法加载实体的
 95      * @param id 实体的id
 96      * @return 查询出来的实体
 97      */
 98     public T get(PK id);
 99 
100     /**
101      * contains
102      * @param t 实体
103      * @return 是否包含
104      */
105     public boolean contains(T t);
106 
107     /**
108      * delete
109      * @param t
110      * 删除实体
111      */
112     public void delete(T t);
113 
114     /**
115      * 根据ID删除数据
116      * @param Id 实体id
117      * @return 是否删除成功
118      */
119     public boolean deleteById(PK Id);
120 
121     /**
122      * 删除所有
123      * @param entities 实体的Collection集合
124      */
125     public void deleteAll(Collection<T> entities);
126 
127     /**
128      * 执行Hql语句 要求 hql中参数顺序与可变参数 中参数顺序相一致
129      * @param hqlString hql
130      * @param values 不定参数数组
131      */
132     public void queryHql(String hqlString, Object... values);
133 
134     /**
135      * 执行Sql语句(不建议用,影响扩展)
136      * @param sqlString sql
137      * @param values 不定参数数组
138      */
139     public void querySql(String sqlString, Object... values);
140 
141     /**
142      * 根据HQL语句查找唯一实体
143      * 
144      * @param hqlString HQL语句
145      * @param values 不定参数的Object数组
146      * @return 查询实体
147      */
148     public T getByHQL(String hqlString, Object... values);
149     
150     /**
151      * 根据SQL语句查找唯一实体(不建议用,影响扩展)
152      * @param sqlString SQL语句
153      * @param values 不定参数的Object数组
154      * @return 查询实体
155      */
156 
157     /**
158      * 根据HQL语句,得到对应的list
159      * @param hqlString HQL语句
160      * @param values 不定参数的Object数组
161      * @return 查询多个实体的List集合
162      */
163     public List<T> getListByHQL(String hqlString, Object... values);
164 
165     /**
166      * 根据SQL语句,得到对应的list(不建议用,影响扩展)
167      * @param sqlString HQL语句
168      * @param values 不定参数的Object数组
169      * @return 查询多个实体的List集合
170      */
171     public List<T> getListBySQL(String sqlString, Object... values);
172 
173     /**
174      * refresh 刷新实体,强制与数据库两步 refresh方法应该是数据库的数据更新到本地的person实体中,而不是本地person更新数据到数据库中  也就是执行refresh方法是更新了java代码中变量的数据值
175      * @param t 实体
176      */
177     public void refresh(T t);
178 
179     /**
180      * update
181      * @param t
182      * 更新的是数据库中的数据
183      */
184     public void update(T t);
185 
186     /**
187      * 根据HQL得到记录数
188      * @param hql HQL语句
189      * @param values 不定参数的Object数组
190      * @return 记录总数
191      */
192     public Long countByHql(String hql, Object... values);
193 
194     /**
195      * HQL分页查询
196      * 
197      * @param hql HQL语句
198      * @param countHql 查询记录条数的HQL语句
199      * @param pageNo 下一页
200      * @param pageSize 一页总条数
201      * @param values  不定Object数组参数
202      * @return PageResults的封装类,里面包含了页码的信息以及查询的数据List集合
203      */
204     public  PageInfo<T> findPageByHql(String hql, String countHql, int pageNo, int pageSize, Object... values);
205     
206     /**
207      * 按属性查找对象列表,匹配方式为相等
208      * @param propertyName
209      * @param value
210      * @return List<T>
211      */
212     public List<T> list(String propertyName, Object value);
213     
214     /**
215      * 根据criterion查询条件获取数据列表
216      * @param criterion
217      * @return List<T>
218      */
219     public List<T> list(Criterion criterion);
220     
221     /**
222      * 按Criteria查询对象列表
223      * @param criterions
224      * @return List<T>
225      */
226     public List<T> list(Criterion... criterions);
227     
228     /**
229      * 按属性查找唯一对象,匹配方式为相等
230      * @param propertyName
231      * @param value
232      * @return T
233      */
234     public T uniqueResult(String propertyName, Object value);
235     
236     /**
237      * 按Criteria查询唯一对象
238      * @param criterions
239      * @return T
240      */
241     public T uniqueResult(Criterion... criterions);
242     
243     /**
244      * 按Criteria查询唯一对象
245      * @param criteria
246      * @return T
247      */
248     public T uniqueResult(Criteria criteria);
249     
250     /**
251      * 按criteria查询某个Integer类型的字段
252      * @param criteria
253      * @return
254      */
255     public Integer uniqueResultInt(Criteria criteria);
256     
257     /**
258      * 为Criteria添加distinct transformer
259      * @param criteria
260      * @return Criteria
261      */
262     public Criteria distinct(Criteria criteria);
263     
264     /**
265      * 刷新session
266      */
267     public void flush();
268     
269     /**
270      * 清空session
271      */
272     public void clear();
273     
274     /**
275      * 创建Criteria实例
276      */
277     public Criteria createCriteria();
278     
279     /**
280      * 根据Criterion条件创建Criteria
281      * @param criterions
282      * @return Criteria
283      */
284     public Criteria createCriteria(Criterion... criterions);
285     
286     /**
287      * 分页查询Criteria
288      * @param criteria 
289      * @param pageNo 下页页码
290      * @param pageSize 页面数据量
291      * @return List<T>
292      */
293     public List<T> findPage(Criteria criteria, int pageNo, int pageSize);
294     
295     /**
296      * 分页查询Criteria
297      * @param criteria
298      * @param pageNo
299      * @param pageSize
300      * @return PageInfo<T>
301      * @throws SecurityException 
302      * @throws NoSuchFieldException 
303      * @throws IllegalAccessException 
304      * @throws IllegalArgumentException 
305      */
306     public PageInfo<T> findQuery(Criteria criteria, int pageNo, int pageSize);
307     
308     /**
309      * 
310      * @param hql
311      * @param pageNo
312      * @param pageSize
313      * @param map
314      * @return List<T>
315      */
316     public List<T> findQuery(String hql, int pageNo, int pageSize, Map<?, ?> map);
317 }
View Code

GenericDaoImpl.java

  1 package com.agen.dao.impl;
  2 
  3 import java.io.Serializable;
  4 import java.lang.reflect.Field;
  5 import java.util.ArrayList;
  6 import java.util.Collection;
  7 import java.util.List;
  8 import java.util.Map;
  9 import java.util.Map.Entry;
 10 
 11 import org.hibernate.Criteria;
 12 import org.hibernate.Query;
 13 import org.hibernate.QueryException;
 14 import org.hibernate.ScrollableResults;
 15 import org.hibernate.Session;
 16 import org.hibernate.SessionFactory;
 17 import org.hibernate.criterion.CriteriaSpecification;
 18 import org.hibernate.criterion.Criterion;
 19 import org.hibernate.criterion.DetachedCriteria;
 20 import org.hibernate.criterion.Order;
 21 import org.hibernate.criterion.Projections;
 22 import org.hibernate.criterion.Restrictions;
 23 import org.hibernate.internal.CriteriaImpl;
 24 import org.hibernate.internal.CriteriaImpl.Subcriteria;
 25 import org.springframework.beans.factory.annotation.Autowired;
 26 import org.springframework.transaction.annotation.Transactional;
 27 import org.springframework.util.Assert;
 28 
 29 import java.lang.reflect.ParameterizedType; 
 30 
 31 import com.agen.dao.GenericDao;
 32 import com.github.pagehelper.PageInfo;
 33 
 34 public class GenericDaoImpl<T, PK extends Serializable> implements GenericDao<T, PK> {
 35     /**
 36      * 不建议直接使用
 37      */
 38     @Autowired
 39     private SessionFactory sessionFactory;
 40     
 41     public Session getSession() {
 42         // 需要开启事物,才能得到CurrentSession
 43         return sessionFactory.getCurrentSession();
 44     }
 45     
 46     
 47     protected Class<T> entityClass;
 48 
 49     protected Class getEntityClass() {
 50         if (entityClass == null) {
 51             if(((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments().length > 0) {
 52                 entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
 53             }
 54         }
 55         return entityClass;
 56     }
 57 
 58     public SessionFactory getSessionFactory() {
 59         return sessionFactory;
 60     }
 61     
 62     public void setSessionFactory(SessionFactory sessionFactory) {
 63         this.sessionFactory = sessionFactory;
 64     }
 65     
 66     @Override
 67     public Criteria createCriteria() {
 68         return getSession().createCriteria(getEntityClass());
 69     }
 70 
 71     
 72     @Override
 73     public void save(T t) {
 74         this.getSession().save(t);
 75     }
 76 
 77     @Override
 78     public void saveOrUpdate(T t) {
 79         Assert.notNull(t);
 80         this.getSession().saveOrUpdate(t);
 81     }
 82     
 83     @Override
 84     public T load(PK id) {
 85         Assert.notNull(id);
 86         T load = (T) this.getSession().load(getEntityClass(), id);
 87         return load;
 88     }
 89 
 90     @Override
 91     public T get(PK id) {
 92         Assert.notNull(id);
 93         T load = (T) this.getSession().get(getEntityClass(), id);
 94         Java创建Web项目

Mybatis环境搭建-实现查询所有的功能

java 使用JPA注释的项目实体与供应商建立多对一关系

c#中mvc添加类库写实体类怎么写

如何使用myeclipse反向生成实体类

eclipse里面创建jsp