日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装

發布時間:2024/4/13 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SpringJdbc持久層封裝,Spring jdbcTemplate封裝,springJdbc泛型Dao,Spring baseDao封裝

?

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

?Copyright?蕃薯耀 2017年7月6日

http://www.cnblogs.com/fanshuyao/

?

很久之前弄的Spring Jdbc持久化層的baseDao,現在做個記錄。

基本的增、刪、查、改、分頁、排序都可以用,只是兼容一般,如主鍵必須是id,并沒有深入再封裝。

?封裝基于Spring4+Mysql

Java代碼??
  • package?com.lqy.spring.dao.impl;??
  • ??
  • import?java.io.Serializable;??
  • import?java.lang.reflect.Field;??
  • import?java.lang.reflect.Method;??
  • import?java.util.ArrayList;??
  • import?java.util.LinkedHashMap;??
  • import?java.util.List;??
  • import?java.util.Map;??
  • ??
  • import?org.springframework.beans.BeanWrapper;??
  • import?org.springframework.beans.factory.annotation.Autowired;??
  • import?org.springframework.jdbc.core.BeanPropertyRowMapper;??
  • import?org.springframework.jdbc.core.JdbcTemplate;??
  • ??
  • import?com.lqy.Utils.EntityUtils;??
  • import?com.lqy.Utils.StrUtils;??
  • import?com.lqy.spring.bean.Page;??
  • import?com.lqy.spring.dao.BaseDao;??
  • import?com.lqy.spring.editor.GenderEditor;??
  • import?com.lqy.spring.entity.SqlEntity;??
  • import?com.lqy.spring.enums.Gender;??
  • ??
  • @SuppressWarnings({"unchecked","rawtypes"})??
  • public?class?BaseDaoImpl<T>?implements?BaseDao<T>?{??
  • ??????
  • ??????
  • ????@Autowired??
  • ????JdbcTemplate?jdbcTemplate;??
  • ??????
  • ????//entityClass.getSimpleName()=Person??
  • ????//entityClass.getName()=com.lqy.spring.c3p0.beans.Person??
  • ????protected?Class<T>?entityClass?=?(Class<T>)?EntityUtils.getEntityClass(this.getClass());??
  • ??
  • ????//private??RowMapper<T>?rowMapper?=?new?BeanPropertyRowMapper<T>(entityClass);??
  • ??????
  • ????private?BeanPropertyRowMapper<T>?rowMapper?=?new?BeanPropertyRowMapper<T>(entityClass){??
  • ????????@Override??
  • ????????protected?void?initBeanWrapper(BeanWrapper?bw)?{??
  • ????????????bw.registerCustomEditor(Gender.class,?new?GenderEditor());??
  • ????????????super.initBeanWrapper(bw);??
  • ????????}??
  • ????};??
  • ??????
  • ????/**?
  • ?????*?獲取實體?
  • ?????*?@param?id?對象的id(Serializable)?
  • ?????*?@return?T?對象?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?T?get(Serializable?id)?{??
  • ????????String?sql?=?getSql()?+?"and?id=??";??
  • ????????return?(T)jdbcTemplate.queryForObject(sql,?rowMapper,?id);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?查詢?
  • ?????*?@return?List<T>?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?List<T>?query()?{??
  • ????????return?(List<T>)?jdbcTemplate.query(getSql(),?rowMapper);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?查詢?
  • ?????*?@param?page?分頁參數?
  • ?????*?@param?whereSql?查詢條件(例:o.name=?)?
  • ?????*?@param?params?查詢條件對應的參數(List<Object>)?
  • ?????*?@return?List<T>?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?List<T>?query(Page?page,?String?whereSql,?List<Object>?params)?{??
  • ????????List<Object>?paramList?=?new?ArrayList<Object>();??
  • ????????if(!StrUtils.isEmpty(whereSql)?&&?!StrUtils.isEmpty(params)){??
  • ????????????for?(Object?object?:?params)?{??
  • ????????????????if(object?instanceof?Enum){??
  • ????????????????????paramList.add(((Enum)object).ordinal());??
  • ????????????????}else{??
  • ????????????????????paramList.add(object);??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ????????String?sql?=?getSql(page,?whereSql,?null);??
  • ????????dealPage(page,?sql,?paramList);??
  • ??????????
  • ????????if(!StrUtils.isEmpty(page)){??
  • ????????????paramList.add(page.getOffSize());??
  • ????????????paramList.add(page.getCurrentSize());??
  • ????????}??
  • ????????return?(List<T>)jdbcTemplate.query(sql,?rowMapper,?paramList.toArray());??
  • ????}??
  • ??
  • ????/**?
  • ?????*?查詢?
  • ?????*?@param?page?分頁參數?
  • ?????*?@param?orderby?排序條件(LinkedHashMap<String,?String>)?
  • ?????*?@return?List<T>?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?List<T>?query(Page?page,?LinkedHashMap<String,?String>?orderby)?{??
  • ????????List<Object>?paramsList?=?new?ArrayList<Object>();??
  • ??????????
  • ????????String?sql?=?getSql(page,?null,?orderby);??
  • ????????dealPage(page,?sql,?paramsList);??
  • ??????????
  • ????????if(!StrUtils.isEmpty(page)){??
  • ????????????paramsList.add(page.getOffSize());??
  • ????????????paramsList.add(page.getCurrentSize());??
  • ????????}??
  • ????????return?(List<T>)jdbcTemplate.query(sql,?rowMapper,?paramsList.toArray());??
  • ????}??
  • ??
  • ????/**?
  • ?????*?查詢?
  • ?????*?@param?page?分頁參數?
  • ?????*?@param?whereSql?查詢條件(例:o.name=?)?
  • ?????*?@param?params?查詢條件對應的參數(List<Object>)?
  • ?????*?@param?orderby?排序條件(LinkedHashMap<String,?String>)?
  • ?????*?@return?List<T>?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?List<T>?query(Page?page,?String?whereSql,?List<Object>?params,?LinkedHashMap<String,?String>?orderby)?{??
  • ????????List<Object>?paramsList?=?new?ArrayList<Object>();??
  • ????????if(!StrUtils.isEmpty(whereSql)?&&?!StrUtils.isEmpty(params)){??
  • ????????????for?(Object?object?:?params)?{??
  • ????????????????if(object?instanceof?Enum){??
  • ????????????????????paramsList.add(((Enum)object).ordinal());??
  • ????????????????}else{??
  • ????????????????????paramsList.add(object);??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ??????????
  • ????????String?sql?=?getSql(page,?whereSql,?orderby);??
  • ????????//System.out.println("sql?="+sql);??
  • ????????dealPage(page,?sql,?paramsList);??
  • ??????????
  • ????????if(!StrUtils.isEmpty(page)){??
  • ????????????paramsList.add(page.getOffSize());??
  • ????????????paramsList.add(page.getCurrentSize());??
  • ????????}??
  • ??????????
  • ????????return?(List<T>)jdbcTemplate.query(sql,?rowMapper,?paramsList.toArray());??
  • ????}??
  • ??
  • ????/**?
  • ?????*?更新?
  • ?????*?@param?sql?自定義更新sql?
  • ?????*?@param?params?查詢條件對應的參數(List<Object>)?
  • ?????*?@return?int?更新的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?update(String?sql,?List<Object>?params)?{??
  • ????????//String?sql="update?person?set?name=??where?id=?";??
  • ????????return?jdbcTemplate.update(sql,?params.toArray());??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?更新(先從數據庫取出來再更新)?
  • ?????*?@param?t?更新的對象?
  • ?????*?@return?int?更新的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?update(T?t)?throws?Exception{??
  • ????????SqlEntity?sqlEntity?=?getUpdateSql(t);??
  • ????????//System.out.println("=====sqlEntity.getSql()="+sqlEntity.getSql());??
  • ????????return?jdbcTemplate.update(sqlEntity.getSql(),?sqlEntity.getParams().toArray());??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?更新(通過模板更新,把符合template條件的數據都更新為value對象中的值)?
  • ?????*?@param?t?更新的對象?
  • ?????*?@return?int?更新的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?update(T?value,T?template)?throws?Exception{??
  • ????????SqlEntity?sqlEntity?=?getUpdateSql(value,template);??
  • ????????//System.out.println("=====update(T?value,T?template)?sqlEntity.getSql()="+sqlEntity.getSql());??
  • ????????return?jdbcTemplate.update(sqlEntity.getSql(),?sqlEntity.getParams().toArray());??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?保存?
  • ?????*?@param?t?保存的對象?
  • ?????*?@return?int?保存的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?save(T?t)?throws?Exception{??
  • ????????SqlEntity?sqlEntity?=?getSaveSql(t);??
  • ????????return?jdbcTemplate.update(sqlEntity.getSql(),?sqlEntity.getParams().toArray());??
  • ????};??
  • ??
  • ????/**?
  • ?????*?保存?
  • ?????*?@param?sql?自定義保存sql?
  • ?????*?@param?params?查詢條件對應的參數(List<Object>)?
  • ?????*?@return?int?保存的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?save(String?sql,?List<Object>?params)?{??
  • ????????//String?sql="INSERT?INTO?person?(`name`,age,create_time)?VALUES(?,?,?);";??
  • ????????return?jdbcTemplate.update(sql,?params.toArray());??
  • ????}??
  • ??
  • ????/**?
  • ?????*?刪除?
  • ?????*?@param?id?對象的id(Serializable)?
  • ?????*?@return?int?刪除的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?delete(Serializable?id)?{??
  • ????????String?sql="delete?from?"?+?StrUtils.changeName(this.entityClass.getSimpleName())?+?"?where?id=?";??
  • ????????return?jdbcTemplate.update(sql,?id);??
  • ????}??
  • ??????
  • ????@SuppressWarnings("deprecation")??
  • ????@Override??
  • ????public?int?getCount(String?whereSql,?Object[]?objects){??
  • ????????String?entityName?=?this.entityClass.getSimpleName();??
  • ????????StringBuffer?sql?=?new?StringBuffer("select?count(*)?from?");??
  • ????????sql.append(StrUtils.changeName(entityName));??
  • ????????sql.append("?o?").append(whereSql);??
  • ????????//System.out.println("getCount?sql.toString()="+sql.toString());??
  • ????????//return?jdbcTemplate.queryForInt(sql.toString(),?entityClass);??
  • ????????return?jdbcTemplate.queryForInt(sql.toString(),?objects);??
  • ??????????????????
  • ????}??
  • ??????
  • ????protected?String?getSql(){??
  • ????????String?entityName?=?this.entityClass.getSimpleName();??
  • ????????StringBuffer?sql?=?new?StringBuffer("select?*?from?");??
  • ????????sql.append(StrUtils.changeName(entityName));??
  • ????????sql.append("?o?where?1=1?");??
  • ????????return?sql.toString();??
  • ????}??
  • ??????
  • ????protected?String?getSql(String?whereSql){??
  • ????????String?entityName?=?this.entityClass.getSimpleName();??
  • ????????StringBuffer?sql?=?new?StringBuffer("select?*?from?");??
  • ????????sql.append(StrUtils.changeName(entityName));??
  • ????????sql.append("?o?where?1=1?");??
  • ????????if(!StrUtils.isEmpty(whereSql)){??
  • ????????????sql.append("?").append(whereSql);??
  • ????????}??
  • ????????return?sql.toString();??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?獲取sql?
  • ?????*?@param?page?分頁參數,如果為空,則不在sql增加limit??,???
  • ?????*?@param?orderby?排序參數,如果為空,則不在sql增加ORDER?BY?
  • ?????*?@param?whereSql?查詢條件參數,如果為空,則不在sql增加?and?name=??
  • ?????*?@return?sql?
  • ?????*/??
  • ????protected?String?getSql(Page?page,?String?whereSql,?Map<String,String>?orderby){??
  • ????????String?entityName?=?this.entityClass.getSimpleName();??
  • ????????StringBuffer?sql?=?new?StringBuffer("select?*?from?");??
  • ????????sql.append(StrUtils.changeName(entityName));??
  • ????????sql.append("?o?where?1=1?");??
  • ????????if(!StrUtils.isEmpty(whereSql)){??
  • ????????????sql.append("?").append(whereSql);??
  • ????????}??
  • ????????if(!StrUtils.isEmpty(orderby)){??
  • ????????????sql.append("?ORDER?BY?");??
  • ????????????for?(String?string?:?orderby.keySet())?{??
  • ????????????????String?value?=?orderby.get(string);??
  • ????????????????if(StrUtils.isEmpty(value)){??
  • ????????????????????value?=?"ASC";??
  • ????????????????}??
  • ????????????????sql.append("o.").append(string).append("?").append(value.toUpperCase()).append(",");??
  • ????????????}??
  • ????????????if(sql.indexOf(",")?>?-1){??
  • ????????????????sql.deleteCharAt(sql.length()-1);??
  • ????????????}??
  • ????????}??
  • ????????if(!StrUtils.isEmpty(page)){??
  • ????????????sql.append("?limit??,??");??
  • ????????}??
  • ????????//System.out.println("------sql.toString()="+sql.toString());??
  • ????????return?sql.toString();??
  • ????}??
  • ??????
  • ????private?SqlEntity?getUpdateSql(T?t)?throws?Exception{??
  • ????????SqlEntity?sqlEntity?=?new?SqlEntity();??
  • ????????sqlEntity.setParams(new?ArrayList<Object>());??
  • ????????Field[]?fields?=?entityClass.getDeclaredFields();??
  • ????????StringBuffer?sql?=?new?StringBuffer("");??
  • ????????sql.append("update?").append(StrUtils.changeName(entityClass.getSimpleName())).append("?o?set?");??
  • ????????for?(Field?field?:?fields)?{??
  • ????????????StringBuffer?methodName?=?new?StringBuffer("");??
  • ????????????//System.out.println("===field.getType()="+field.getType());??
  • ????????????if(field.getType()?==?boolean.class){??
  • ????????????????if(field.getName().contains("is")){??
  • ????????????????????methodName.append(field.getName());??
  • ????????????????}else{??
  • ????????????????????methodName.append("is").append(StrUtils.firstCodeToUpperCase(field.getName()));??
  • ????????????????}??
  • ????????????}else{??
  • ????????????????methodName.append("get").append(StrUtils.firstCodeToUpperCase(field.getName()));??
  • ????????????}??
  • ????????????if(!"id".equals(field.getName())){??
  • ????????????????Method?method?=?entityClass.getMethod(methodName.toString(),?new?Class[]{});??
  • ????????????????Object?objectValue?=?method.invoke(t,?new?Object[]{});??
  • ????????????????if(objectValue?instanceof?Enum){??
  • ????????????????????sqlEntity.getParams().add(((Enum)objectValue).ordinal());??
  • ????????????????}else{??
  • ????????????????????sqlEntity.getParams().add(objectValue);??
  • ????????????????}??
  • ????????????????sql.append("?o.").append(StrUtils.changeName(field.getName())).append("=??,");??
  • ????????????}??
  • ????????}??
  • ????????if(sql.indexOf(",")?>?-1){??
  • ????????????sql.deleteCharAt(sql.length()?-?1);??
  • ????????}??
  • ????????sql.append("?where?o.id=?");??
  • ????????Method?idMethod?=?entityClass.getMethod("getId",?new?Class[]{});??
  • ????????sqlEntity.getParams().add(idMethod.invoke(t,?new?Object[]{}));??
  • ????????sqlEntity.setSql(sql.toString());??
  • ????????return?sqlEntity;??
  • ????}??
  • ??????
  • ????private?SqlEntity?getUpdateSql(T?value,?T?template)?throws?Exception{??
  • ??????????
  • ????????SqlEntity?sqlEntity?=?new?SqlEntity();??
  • ????????sqlEntity.setParams(new?ArrayList<Object>());??
  • ????????Field[]?fields?=?entityClass.getDeclaredFields();??
  • ????????StringBuffer?sql?=?new?StringBuffer("");??
  • ????????sql.append("update?").append(StrUtils.changeName(entityClass.getSimpleName())).append("?o?set?");??
  • ????????StringBuffer?whereSql?=?new?StringBuffer("?where?");??
  • ????????for?(Field?field?:?fields)?{??
  • ????????????StringBuffer?methodName?=?new?StringBuffer("");??
  • ????????????//System.out.println("===field.getType()="+field.getType());??
  • ????????????if(field.getType()?==?boolean.class){??
  • ????????????????if(field.getName().contains("is")){??
  • ????????????????????methodName.append(field.getName());??
  • ????????????????}else{??
  • ????????????????????methodName.append("is").append(StrUtils.firstCodeToUpperCase(field.getName()));??
  • ????????????????}??
  • ????????????}else{??
  • ????????????????methodName.append("get").append(StrUtils.firstCodeToUpperCase(field.getName()));??
  • ????????????}??
  • ????????????if(!"id".equals(field.getName())){??
  • ????????????????Method?method?=?entityClass.getMethod(methodName.toString(),?new?Class[]{});??
  • ????????????????Object?objectValue?=?method.invoke(value,?new?Object[]{});??
  • ????????????????if(!StrUtils.isEmpty(objectValue)){??
  • ????????????????????if(objectValue?instanceof?Enum){??
  • ????????????????????????sqlEntity.getParams().add(((Enum)objectValue).ordinal());??
  • ????????????????????}else{??
  • ????????????????????????sqlEntity.getParams().add(objectValue);??
  • ????????????????????}??
  • ????????????????????//sqlEntity.getParams().add(objectValue);??
  • ????????????????????sql.append("?o.").append(StrUtils.changeName(field.getName())).append("=??,");??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ??????????
  • ????????for?(Field?field?:?fields)?{??
  • ????????????StringBuffer?methodName?=?new?StringBuffer("");??
  • ????????????if(field.getType()?==?boolean.class){??
  • ????????????????if(field.getName().contains("is")){??
  • ????????????????????methodName.append(field.getName());??
  • ????????????????}else{??
  • ????????????????????methodName.append("is").append(StrUtils.firstCodeToUpperCase(field.getName()));??
  • ????????????????}??
  • ????????????}else{??
  • ????????????????methodName.append("get").append(StrUtils.firstCodeToUpperCase(field.getName()));??
  • ????????????}??
  • ????????????Method?method?=?entityClass.getMethod(methodName.toString(),?new?Class[]{});??
  • ????????????Object?objectValue?=?method.invoke(template,?new?Object[]{});??
  • ????????????if(!StrUtils.isEmpty(objectValue)){??
  • ????????????????sqlEntity.getParams().add(objectValue);??
  • ????????????????whereSql.append("?o.").append(StrUtils.changeName(field.getName())).append("=???and");??
  • ????????????}??
  • ????????}??
  • ????????if(sql.indexOf(",")?>?-1){??
  • ????????????sql.deleteCharAt(sql.length()?-?1);??
  • ????????}??
  • ????????if(whereSql.indexOf("and")?>?-1){??
  • ????????????sql.append(whereSql.substring(0,?whereSql.length()-3));??
  • ????????????whereSql?=?new?StringBuffer();??
  • ????????}else{??
  • ????????????sql.append(whereSql);??
  • ????????}??
  • ????????sqlEntity.setSql(sql.toString());??
  • ????????return?sqlEntity;??
  • ????}??
  • ??????
  • ????private?SqlEntity?getSaveSql(T?t)?throws?Exception{??
  • ????????SqlEntity?sqlEntity?=?new?SqlEntity();??
  • ????????sqlEntity.setParams(new?ArrayList<Object>());??
  • ????????Field[]?fields?=?entityClass.getDeclaredFields();??
  • ????????StringBuffer?sql?=?new?StringBuffer("");??
  • ????????sql.append("insert?into?").append(StrUtils.changeName(entityClass.getSimpleName())).append("?(?");??
  • ????????int?paramLength?=?0;??
  • ????????for?(Field?field?:?fields)?{??
  • ????????????StringBuffer?methodName?=?new?StringBuffer("");??
  • ????????????if(field.getType()?==?boolean.class){??
  • ????????????????if(field.getName().contains("is")){??
  • ????????????????????methodName.append(field.getName());??
  • ????????????????}else{??
  • ????????????????????methodName.append("is").append(StrUtils.firstCodeToUpperCase(field.getName()));??
  • ????????????????}??
  • ????????????}else{??
  • ????????????????methodName.append("get").append(StrUtils.firstCodeToUpperCase(field.getName()));??
  • ????????????}??
  • ????????????Method?method?=?entityClass.getMethod(methodName.toString(),?new?Class[]{});??
  • ????????????Object?value?=?method.invoke(t,?new?Object[]{});??
  • ????????????if(!StrUtils.isEmpty(value)){??
  • ????????????????if(value?instanceof?Enum){??
  • ????????????????????sqlEntity.getParams().add(((Enum)?value).ordinal());??
  • ????????????????}else{??
  • ????????????????????sqlEntity.getParams().add(value);??
  • ????????????????}??
  • ????????????????sql.append("`").append(StrUtils.changeName(field.getName())).append("`").append(",");??
  • ????????????????paramLength?++;??
  • ????????????}??
  • ????????}??
  • ????????if(sql.indexOf(",")?>?-1){??
  • ????????????sql.deleteCharAt(sql.length()?-?1);??
  • ????????}??
  • ????????sql.append(")?values(");??
  • ????????for?(int?i=0;i<paramLength;i++)?{??
  • ????????????sql.append("?,");??
  • ????????}??
  • ????????if(sql.indexOf(",")?>?-1){??
  • ????????????sql.deleteCharAt(sql.length()?-?1);??
  • ????????}??
  • ????????sql.append(")");??
  • ????????//System.out.println("sql.toString()="+sql.toString());??
  • ????????sqlEntity.setSql(sql.toString());??
  • ????????return?sqlEntity;??
  • ????}??
  • ??????
  • ????private?void?dealPage(Page?page,?String?sql,?List<Object>?params){??
  • ????????String?whereSql?=?"";??
  • ????????if(sql?!=?null?&&?!sql.trim().equals("")){??
  • ????????????int?whereIndex?=?sql.toLowerCase().indexOf("where");??
  • ????????????int?orderIndex?=?sql.toLowerCase().indexOf("order");??
  • ????????????int?limitIndex?=?sql.toLowerCase().indexOf("limit");??
  • ????????????if(whereIndex?>?-1){??
  • ????????????????whereSql?=?sql.substring(whereIndex,?sql.length());??
  • ????????????????orderIndex?=?whereSql.toLowerCase().indexOf("order");??
  • ????????????}??
  • ????????????if(whereIndex?>?-1?&&?orderIndex?>?-1){??
  • ????????????????whereSql?=?whereSql.substring(0,?orderIndex?-?1);??
  • ????????????????limitIndex?=?whereSql.toLowerCase().indexOf("limit");??
  • ????????????}??
  • ????????????if(whereIndex?>?-1?&&?limitIndex?>?-1){??
  • ????????????????whereSql?=?whereSql.substring(0,?limitIndex?-?1);??
  • ????????????}??
  • ????????}??
  • ????????if(page.getTotalSizeNew()){??
  • ????????????page.setTotalSize(getCount(whereSql,?params.toArray()));??
  • ????????}??
  • ????????setPage(page);??
  • ????}??
  • ??????
  • ????private?void?setPage(Page?page){??
  • ????????page.setTotalPages(page.getTotalSize()%page.getCurrentSize()==0?page.getTotalSize()/page.getCurrentSize():(page.getTotalSize()/page.getCurrentSize()+1));??
  • ????????page.setCurrentPage(page.getOffSize()/page.getCurrentSize()+1);??
  • ????}??
  • }??
  • ?

    ?

    Java代碼??
  • package?com.lqy.spring.dao;??
  • ??
  • import?java.io.Serializable;??
  • import?java.util.LinkedHashMap;??
  • import?java.util.List;??
  • ??
  • import?com.lqy.spring.bean.Page;??
  • ??
  • ??
  • public?interface?BaseDao<T>?{??
  • ??
  • ????public?T?get(Serializable?id);??
  • ??????
  • ????public?List<T>?query();??
  • ??????
  • ????public?List<T>?query(Page?page,?String?whereSql,?List<Object>?params);??
  • ??????
  • ????public?List<T>?query(Page?page,?LinkedHashMap<String,?String>?orderby);??
  • ??????
  • ????public?List<T>?query(Page?page,?String?whereSql,?List<Object>?params,?LinkedHashMap<String,?String>?orderby);??
  • ??????
  • ????public?int?update(String?sql,?List<Object>?params);??
  • ??????
  • ????public?int?update(T?t)?throws?Exception;??
  • ??????
  • ????public?int?update(T?value,T?template)?throws?Exception;??
  • ??????
  • ????public?int?save(T?t)?throws?Exception;??
  • ??????
  • ????public?int?save(String?sql,?List<Object>?params);??
  • ??????
  • ????public?int?delete(Serializable?id);??
  • ??????
  • ????public?int?getCount(String?whereSql,?Object[]?objects);??
  • }??
  • ?

    Java代碼??
  • package?com.lqy.spring.service.impl;??
  • ??
  • import?java.io.Serializable;??
  • import?java.util.LinkedHashMap;??
  • import?java.util.List;??
  • ??
  • import?org.springframework.beans.factory.annotation.Autowired;??
  • import?org.springframework.transaction.annotation.Isolation;??
  • import?org.springframework.transaction.annotation.Transactional;??
  • ??
  • import?com.lqy.spring.bean.Page;??
  • import?com.lqy.spring.dao.BaseDao;??
  • import?com.lqy.spring.service.BaseService;??
  • ??
  • @Transactional??
  • public?class?BaseServiceImpl<T>?implements?BaseService<T>?{??
  • ??
  • ????@Autowired??
  • ????BaseDao<T>?baseDao;??
  • ??????
  • ????/**?
  • ?????*?獲取實體?
  • ?????*?@param?id?對象的id(Serializable)?
  • ?????*?@return?T?對象?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Transactional(isolation=Isolation.READ_COMMITTED,??
  • ????????????readOnly=true)??
  • ????@Override??
  • ????public?T?get(Serializable?id)?{??
  • ????????return?baseDao.get(id);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?查詢?
  • ?????*?@return?List<T>?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Transactional(isolation=Isolation.READ_COMMITTED,readOnly=true)??
  • ????@Override??
  • ????public?List<T>?query()?{??
  • ????????return?baseDao.query();??
  • ????}??
  • ??
  • ????/**?
  • ?????*?查詢?
  • ?????*?@param?page?分頁參數?
  • ?????*?@param?whereSql?查詢條件(例:o.name=?)?
  • ?????*?@param?params?查詢條件對應的參數(List<Object>)?
  • ?????*?@return?List<T>?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Transactional(isolation=Isolation.READ_COMMITTED,??
  • ????????????readOnly=true)??
  • ????@Override??
  • ????public?List<T>?query(Page?page,?String?whereSql,?List<Object>?params)?{??
  • ????????return?baseDao.query(page,?whereSql,?params);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?查詢?
  • ?????*?@param?page?分頁參數?
  • ?????*?@param?orderby?排序條件(LinkedHashMap<String,?String>)?
  • ?????*?@return?List<T>?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Transactional(isolation=Isolation.READ_COMMITTED,??
  • ????????????readOnly=true)??
  • ????@Override??
  • ????public?List<T>?query(Page?page,?LinkedHashMap<String,?String>?orderby)?{??
  • ????????return?baseDao.query(page,?orderby);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?查詢?
  • ?????*?@param?page?分頁參數?
  • ?????*?@param?whereSql?查詢條件(例:o.name=?)?
  • ?????*?@param?params?查詢條件對應的參數(List<Object>)?
  • ?????*?@param?orderby?排序條件(LinkedHashMap<String,?String>)?
  • ?????*?@return?List<T>?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Transactional(isolation=Isolation.READ_COMMITTED,??
  • ????????????readOnly=true)??
  • ????@Override??
  • ????public?List<T>?query(Page?page,?String?whereSql,?List<Object>?params,??
  • ????????????LinkedHashMap<String,?String>?orderby)?{??
  • ????????return?baseDao.query(page,?whereSql,?params,?orderby);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?更新?
  • ?????*?@param?sql?自定義更新sql?
  • ?????*?@param?params?查詢條件對應的參數(List<Object>)?
  • ?????*?@return?int?更新的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?update(String?sql,?List<Object>?params)?{??
  • ????????return?baseDao.update(sql,?params);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?更新(先從數據庫取出來再更新)?
  • ?????*?@param?t?更新的對象?
  • ?????*?@return?int?更新的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?update(T?t)?throws?Exception?{??
  • ????????return?baseDao.update(t);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?更新(通過模板更新,把符合template條件的數據都更新為value對象中的值)?
  • ?????*?@param?t?更新的對象?
  • ?????*?@return?int?更新的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?update(T?value,T?template)?throws?Exception{??
  • ????????return?baseDao.update(value,template);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?保存?
  • ?????*?@param?t?保存的對象?
  • ?????*?@return?int?保存的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?save(T?t)?throws?Exception?{??
  • ????????return?baseDao.save(t);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?保存?
  • ?????*?@param?sql?自定義保存sql?
  • ?????*?@param?params?查詢條件對應的參數(List<Object>)?
  • ?????*?@return?int?保存的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?save(String?sql,?List<Object>?params)?{??
  • ????????return?baseDao.save(sql,?params);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?刪除?
  • ?????*?@param?id?對象的id(Serializable)?
  • ?????*?@return?int?刪除的數量?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-18?
  • ?????*/??
  • ????@Override??
  • ????public?int?delete(Serializable?id)?{??
  • ????????return?baseDao.delete(id);??
  • ????}??
  • ??
  • }??
  • ?

    Java代碼??
  • package?com.lqy.spring.service;??
  • ??
  • import?java.io.Serializable;??
  • import?java.util.LinkedHashMap;??
  • import?java.util.List;??
  • ??
  • import?com.lqy.spring.bean.Page;??
  • ??
  • ??
  • public?interface?BaseService<T>?{??
  • ??
  • ????public?T?get(Serializable?id);??
  • ??????
  • ????public?List<T>?query();??
  • ??????
  • ????public?List<T>?query(Page?page,?String?whereSql,?List<Object>?params);??
  • ??????
  • ????public?List<T>?query(Page?page,?LinkedHashMap<String,?String>?orderby);??
  • ??????
  • ????public?List<T>?query(Page?page,?String?whereSql,?List<Object>?params,?LinkedHashMap<String,?String>?orderby);??
  • ??????
  • ????public?int?update(String?sql,?List<Object>?params);??
  • ??????
  • ????public?int?update(T?t)?throws?Exception;??
  • ??????
  • ????public?int?update(T?value,T?template)?throws?Exception;??
  • ??????
  • ????public?int?save(T?t)?throws?Exception;??
  • ??????
  • ????public?int?save(String?sql,?List<Object>?params);??
  • ??????
  • ????public?int?delete(Serializable?id);??
  • }??
  • ?

    Java代碼??
  • package?com.lqy.spring.bean;??
  • ??
  • public?class?Page?{??
  • ??
  • ????private?int?currentSize;??
  • ????private?int?offSize;??
  • ????private?int?totalSize;??
  • ????private?int?totalPages;??
  • ????private?int?currentPage;??
  • ????private?Boolean?totalSizeNew;??
  • ??????
  • ????/**?
  • ?????*?分頁構造函數?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-22?
  • ?????*/??
  • ????public?Page()?{??
  • ????????super();??
  • ????}??
  • ??????
  • ??????
  • ????/**?
  • ?????*?分頁構造函數?
  • ?????*?@param?currentSize?
  • ?????*?@param?offSize?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-22?
  • ?????*/??
  • ????public?Page(int?currentSize,?int?offSize)?{??
  • ????????super();??
  • ????????this.currentSize?=?currentSize;??
  • ????????this.offSize?=?offSize;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?分頁構造函數?
  • ?????*?@param?currentSize?
  • ?????*?@param?offSize?
  • ?????*?@param?totalSizeNew?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-22?
  • ?????*/??
  • ????public?Page(int?currentSize,?int?offSize,?boolean?totalSizeNew)?{??
  • ????????super();??
  • ????????this.currentSize?=?currentSize;??
  • ????????this.offSize?=?offSize;??
  • ????????this.totalSizeNew?=?totalSizeNew;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?分頁構造函數?
  • ?????*?@param?currentSize?
  • ?????*?@param?offSize?
  • ?????*?@param?totalSize?
  • ?????*?@param?totalPages?
  • ?????*?@param?currentPage?
  • ?????*?@param?totalSizeNew?
  • ?????*?@author?lqy?
  • ?????*?@since?2015-10-22?
  • ?????*/??
  • ????public?Page(int?currentSize,?int?offSize,?int?totalSize,?int?totalPages,??
  • ????????????int?currentPage,?boolean?totalSizeNew)?{??
  • ????????super();??
  • ????????this.currentSize?=?currentSize;??
  • ????????this.offSize?=?offSize;??
  • ????????this.totalSize?=?totalSize;??
  • ????????this.totalPages?=?totalPages;??
  • ????????this.currentPage?=?currentPage;??
  • ????????this.totalSizeNew?=?totalSizeNew;??
  • ????}??
  • ??
  • ????public?int?getCurrentSize()?{??
  • ????????return?currentSize;??
  • ????}??
  • ??
  • ????public?void?setCurrentSize(int?currentSize)?{??
  • ????????this.currentSize?=?currentSize;??
  • ????}??
  • ??
  • ????public?int?getOffSize()?{??
  • ????????return?offSize;??
  • ????}??
  • ??
  • ????public?void?setOffSize(int?offSize)?{??
  • ????????this.offSize?=?offSize;??
  • ????}??
  • ??
  • ????public?int?getTotalSize()?{??
  • ????????return?totalSize;??
  • ????}??
  • ??
  • ????public?void?setTotalSize(int?totalSize)?{??
  • ????????this.totalSize?=?totalSize;??
  • ????}??
  • ??
  • ????public?int?getTotalPages()?{??
  • ????????return?totalPages;??
  • ????}??
  • ??
  • ????public?void?setTotalPages(int?totalPages)?{??
  • ????????this.totalPages?=?totalPages;??
  • ????}??
  • ??
  • ????public?int?getCurrentPage()?{??
  • ????????return?currentPage;??
  • ????}??
  • ??
  • ????public?void?setCurrentPage(int?currentPage)?{??
  • ????????this.currentPage?=?currentPage;??
  • ????}??
  • ??
  • ????public?Boolean?getTotalSizeNew()?{??
  • ????????return?totalSizeNew;??
  • ????}??
  • ??
  • ????public?void?setTotalSizeNew(Boolean?totalSizeNew)?{??
  • ????????this.totalSizeNew?=?totalSizeNew;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?String?toString()?{??
  • ????????return?"Page?[currentSize="?+?currentSize?+?",?offSize="?+?offSize??
  • ????????????????+?",?totalSize="?+?totalSize?+?",?totalPages="?+?totalPages??
  • ????????????????+?",?currentPage="?+?currentPage?+?",?totalSizeNew="??
  • ????????????????+?totalSizeNew?+?"]";??
  • ????}??
  • ??
  • ??????
  • ??????
  • ??????
  • ??????
  • }??
  • ?

    ?

    使用的一個例子:

    Java代碼??
  • package?com.lqy.spring.service.impl;??
  • ??
  • import?java.util.ArrayList;??
  • import?java.util.LinkedHashMap;??
  • import?java.util.List;??
  • ??
  • import?org.springframework.beans.factory.annotation.Autowired;??
  • import?org.springframework.stereotype.Service;??
  • import?org.springframework.transaction.annotation.Transactional;??
  • ??
  • import?com.lqy.Utils.StrUtils;??
  • import?com.lqy.exception.PersonMoneyNotEnoughException;??
  • import?com.lqy.spring.bean.Page;??
  • import?com.lqy.spring.bean.Person;??
  • import?com.lqy.spring.dao.PersonDao;??
  • import?com.lqy.spring.service.BookService;??
  • import?com.lqy.spring.service.PersonService;??
  • ??
  • ??
  • @Service??
  • public?class?PersonServiceImpl?extends?BaseServiceImpl<Person>?implements?PersonService?{??
  • ??????
  • ????@Autowired??
  • ????PersonDao?personDao;??
  • ????@Autowired??
  • ????BookService?bookService;??
  • ??????
  • ????@Override??
  • ????public?List<Person>?getPersons(Page?page,?String?name,?Integer?age,?Integer?statusType){??
  • ????????StringBuffer?whereSql?=?new?StringBuffer();??
  • ????????List<Object>?params?=?new?ArrayList<Object>();??
  • ????????LinkedHashMap<String,?String>?orderby?=?new?LinkedHashMap<String,?String>();??
  • ??????????
  • ????????if(!StrUtils.isEmpty(name)){??
  • ????????????whereSql.append("?and?o.name?like??");??
  • ????????????params.add("%"+name+"%");??
  • ????????}??
  • ????????if(!StrUtils.isEmpty(age)){??
  • ????????????whereSql.append("?and?o.age?=??");??
  • ????????????params.add(age);??
  • ????????}??
  • ????????if(!StrUtils.isEmpty(statusType)){??
  • ????????????whereSql.append("?and?o.statusType?=??");??
  • ????????????params.add(statusType);??
  • ????????}??
  • ????????orderby.put("create_time",?"desc");??
  • ????????orderby.put("id",?"desc");??
  • ??????????
  • ????????return?personDao.query(page,?whereSql.toString(),?params,?orderby);??
  • ????}??
  • ??????
  • ????@Transactional??
  • ????public?int?buyBook(Integer?personId,?Double?price)?throws?Exception{??
  • ????????int?result?=?-1;??
  • ????????Person?person?=?personDao.get(personId);??
  • ????????if(!StrUtils.isEmpty(person)){??
  • ????????????Double?leftMoney?=?person.getMoney()?-?price;??
  • ????????????if(leftMoney?>=?0){??
  • ????????????????person.setMoney(leftMoney);??
  • ????????????????result?=?personDao.update(person);??
  • ????????????}else{??
  • ????????????????throw?new?PersonMoneyNotEnoughException();??
  • ????????????}??
  • ????????}??
  • ????????return?result;??
  • ????}??
  • ??????
  • ????@Transactional??
  • ????@Override??
  • ????public?int?buyBook(Integer?personId,?Integer?bookId,?Integer?amount)?throws?Exception{??
  • ????????int?result?=?-1;??
  • ????????Person?person?=?personDao.get(personId);??
  • ????????if(!StrUtils.isEmpty(person)){??
  • ????????????Double?price?=?bookService.getBooksPrices(bookId,?amount);??
  • ????????????Double?leftMoney?=?person.getMoney()?-?price;??
  • ????????????if(leftMoney?>=?0){??
  • ????????????????person.setMoney(leftMoney);??
  • ????????????????personDao.update(person);??
  • ????????????????bookService.sellBooks(bookId,?amount);??
  • ????????????????result?=?1;??
  • ????????????}else{??
  • ????????????????throw?new?PersonMoneyNotEnoughException();??
  • ????????????}??
  • ????????}??
  • ????????return?result;??
  • ????}??
  • ??????
  • }??
  • ?

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ?Copyright?蕃薯耀 2017年7月6日

    http://www.cnblogs.com/fanshuyao/

    轉載于:https://www.cnblogs.com/fanshuyao/p/7127265.html

    總結

    以上是生活随笔為你收集整理的SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。