BaseServiceImpl.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. package com.hywa.banktest.service.impl;
  2. import com.hywa.banktest.kit.GenericsKit;
  3. import com.hywa.banktest.kit.SqlKit;
  4. import com.hywa.banktest.service.BaseService;
  5. import com.jfinal.plugin.activerecord.*;
  6. import java.util.*;
  7. public class BaseServiceImpl<T extends Model<T>> implements BaseService<T>{
  8. @SuppressWarnings("unchecked")
  9. Class<T> clazz = GenericsKit.getSuperClassGenricType(getClass());
  10. Model<T> model = newInstance();
  11. private Model<T> newInstance(){
  12. try {
  13. return clazz.newInstance();
  14. } catch (InstantiationException e) {
  15. e.printStackTrace();
  16. } catch (IllegalAccessException e) {
  17. e.printStackTrace();
  18. }
  19. return null;
  20. }
  21. @Override
  22. public String getSql(String sqlKey) {
  23. return model.getSql(sqlKey);
  24. }
  25. @Override
  26. public boolean save(T entity) {
  27. String [] primaryKeys = TableMapping.me().getTable(clazz).getPrimaryKey();
  28. if (primaryKeys.length == 1) {
  29. entity.set("id", UUID.randomUUID().toString());
  30. }
  31. Set<String> columns = TableMapping.me().getTable(clazz).getColumnTypeMap().keySet();
  32. if (columns.contains("createTime") && null == entity.get("createTime")) {
  33. entity.set("createTime", new Date());
  34. }
  35. return entity.save();
  36. }
  37. @Override
  38. public boolean update(T entity){
  39. return entity.update();
  40. }
  41. @Override
  42. public boolean delete(T entity) {
  43. return entity.delete();
  44. }
  45. @Override
  46. public boolean deleteById(Object id) {
  47. return model.deleteById(id);
  48. }
  49. @Override
  50. public boolean deleteById(Object... ids) {
  51. return model.deleteById(ids);
  52. }
  53. @Override
  54. public List<T> find(SqlPara sqlPara) {
  55. return model.find(sqlPara);
  56. }
  57. @Override
  58. public List<T> find(String sql) {
  59. return model.find(sql);
  60. }
  61. @Override
  62. public List<T> find(String sql, Object... paras) {
  63. return model.find(sql, paras);
  64. }
  65. @Override
  66. public T findById(Object idValue) {
  67. return model.findById(idValue);
  68. }
  69. @Override
  70. public T findById(Object... idValues) {
  71. return model.findById(idValues);
  72. }
  73. @Override
  74. public T findByIdLoadColumns(Object[] idValues, String columns) {
  75. return model.findByIdLoadColumns(idValues, columns);
  76. }
  77. @Override
  78. public T findByIdLoadColumns(Object idValue, String columns) {
  79. return model.findByIdLoadColumns(idValue, columns);
  80. }
  81. @Override
  82. public T findFirst(SqlPara sqlPara) {
  83. return model.findFirst(sqlPara);
  84. }
  85. @Override
  86. public T findFirst(String sql) {
  87. return model.findFirst(sql);
  88. }
  89. @Override
  90. public T findFirst(String sql, Object... paras) {
  91. return model.findFirst(sql, paras);
  92. }
  93. @Override
  94. public Page<T> paginate(int pageNumber, int pageSize, String sql, Object... paras) {
  95. String[] sqls = PageSqlKit.parsePageSql(sql);
  96. return model.paginate(pageNumber, pageSize, sqls[0], sqls[1], paras);
  97. }
  98. /**
  99. *
  100. * @Title: paginate
  101. *@author vic
  102. * @Description: TODO
  103. * @param @param pageNumber
  104. * @param @param pageSize
  105. * @param @param select
  106. * @param @param sqlExceptSelect from
  107. * @param @return
  108. * @return
  109. * @throws
  110. */
  111. @Override
  112. public Page<T> paginate(int pageNumber, int pageSize, String select, String sqlExceptSelect) {
  113. return model.paginate(pageNumber, pageSize, select, sqlExceptSelect);
  114. }
  115. @Override
  116. public Page<T> paginate(int pageNumber, int pageSize, String select, String sqlExceptSelect, Object... paras) {
  117. return model.paginate(pageNumber, pageSize, select, sqlExceptSelect, paras);
  118. }
  119. @Override
  120. public Page<T> paginate(int pageNumber, int pageSize, boolean isGroupBySql, String select, String sqlExceptSelect,
  121. Object... paras) {
  122. return model.paginate(pageNumber, pageSize, isGroupBySql, select, sqlExceptSelect, paras);
  123. }
  124. @Override
  125. public List<T> getAll() {
  126. StringBuffer sql = new StringBuffer();
  127. sql.append(" select * from ").append(TableMapping.me().getTable(clazz).getName());
  128. return model.find(sql.toString());
  129. }
  130. @Override
  131. public List<T> getAllByEqualAttr(T entity, String... columns) {
  132. StringBuffer sbSql = new StringBuffer();
  133. List<Object> params = new ArrayList<Object>();
  134. sbSql.append(" select * from " + TableMapping.me().getTable(clazz).getName());
  135. sbSql.append(" where 1=1 ");
  136. SqlKit.appendEqualCondition(sbSql, entity, params, columns);
  137. return model.find(sbSql.toString(), params.toArray());
  138. }
  139. @Override
  140. public List<T> getAllByEqualAttr(boolean isDynamicQuery, T entity, String... columns) {
  141. StringBuffer sbSql = new StringBuffer();
  142. List<Object> params = new ArrayList<Object>();
  143. sbSql.append(" select * from " + TableMapping.me().getTable(clazz).getName());
  144. sbSql.append(" where 1=1 ");
  145. SqlKit.appendEqualCondition(isDynamicQuery, sbSql, entity, params, columns);
  146. return model.find(sbSql.toString(), params.toArray());
  147. }
  148. @Override
  149. public List<T> getAllByEqualAttr(boolean isDynamicQuery, String loadColumns, T entity, String... columns) {
  150. StringBuffer sbSql = new StringBuffer();
  151. List<Object> params = new ArrayList<Object>();
  152. sbSql.append(" select ").append(loadColumns).append(" from " + TableMapping.me().getTable(clazz).getName());
  153. sbSql.append(" where 1=1 ");
  154. SqlKit.appendEqualCondition(isDynamicQuery, sbSql, entity, params, columns);
  155. return model.find(sbSql.toString(), params.toArray());
  156. }
  157. @Override
  158. public T getByEqualAttr(T entity, String... columns) {
  159. StringBuffer sbSql = new StringBuffer();
  160. List<Object> params = new ArrayList<Object>();
  161. sbSql.append(" select * from " + TableMapping.me().getTable(clazz).getName());
  162. sbSql.append(" where 1=1 ");
  163. SqlKit.appendEqualCondition(sbSql, entity, params, columns);
  164. return model.findFirst(sbSql.toString(), params.toArray());
  165. }
  166. @Override
  167. public T getByEqualAttr(boolean isDynamicQuery, T entity, String... columns) {
  168. StringBuffer sbSql = new StringBuffer();
  169. List<Object> params = new ArrayList<Object>();
  170. sbSql.append(" select * from " + TableMapping.me().getTable(clazz).getName());
  171. sbSql.append(" where 1=1 ");
  172. SqlKit.appendEqualCondition(isDynamicQuery, sbSql, entity, params, columns);
  173. return model.findFirst(sbSql.toString(), params.toArray());
  174. }
  175. @Override
  176. public T getByEqualAttr(boolean isDynamicQuery, String loadColumns, T entity, String... columns) {
  177. StringBuffer sbSql = new StringBuffer();
  178. List<Object> params = new ArrayList<Object>();
  179. sbSql.append(" select ").append(loadColumns).append(" from " + TableMapping.me().getTable(clazz).getName());
  180. sbSql.append(" where 1=1 ");
  181. SqlKit.appendEqualCondition(isDynamicQuery, sbSql, entity, params, columns);
  182. return model.findFirst(sbSql.toString(), params.toArray());
  183. }
  184. @Override
  185. public long getCountByEqualAttr(T entity, String... columns) {
  186. StringBuffer sbSql = new StringBuffer();
  187. List<Object> params = new ArrayList<Object>();
  188. sbSql.append(" select count(*) total from " + TableMapping.me().getTable(clazz).getName());
  189. sbSql.append(" where 1=1 ");
  190. SqlKit.appendEqualCondition(sbSql, entity, params, columns);
  191. return Db.queryFirst(sbSql.toString(), params.toArray());
  192. }
  193. @Override
  194. public long getCountByEqualAttr(boolean isDynamicQuery, T entity, String... columns) {
  195. StringBuffer sbSql = new StringBuffer();
  196. List<Object> params = new ArrayList<Object>();
  197. sbSql.append(" select count(*) total from " + TableMapping.me().getTable(clazz).getName());
  198. sbSql.append(" where 1=1 ");
  199. SqlKit.appendEqualCondition(isDynamicQuery, sbSql, entity, params, columns);
  200. return Db.queryFirst(sbSql.toString(), params.toArray());
  201. }
  202. }