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 }
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项目