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,并没有深入再封装。
- 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);
- }
- }
- 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);
- }
- 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);
- }
- }
- 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);
- }
- 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 + "]";
- }
- }
使用的一个例子:
- 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/
SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装的更多相关文章
- spring学习(四)spring 持久层的封装
持久层:所谓“持久层”,也就是在系统逻辑层面上,专著于实现数据持久化的一个相对独立的领域(Domain),是把数据保存到可掉电式存储设备中.持久层是负责向(或者从)一个或者多个数据存储器中存储(或者获 ...
- 对spring 对持久层的支持和数据库连接池的理解
1.spring对持久层的支持在于,得到数据库连接之后操作上的封装,将操作简化了.也就是说以后操作sql语句就用XXXTemplate(就是一个工具类)对象了. 2.数据库连接池的作用只在于得到数据库 ...
- 【Spring】Spring JdbcTemplate
Spring JdbcTemplate 文章源码 JdbcTemplate 概述 它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装.Spring 框架提供了很多的操 ...
- Spring——JdbcTemplate
一.JdbcTemplate介绍: 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架,Spring Boot Spring Data ...
- SSH三种框架及表示层、业务层和持久层的理解
Struts(表示层)+Spring(业务层)+Hibernate(持久层) SSH:Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts:Struts是一个表示 ...
- 《项目架构那点儿事》——Hibernate泛型Dao,让持久层简洁起来
[前言]hibernate作为持久层ORM技术,它对JDBC进行非常轻量级对象封装,使得我们可以随心所欲的使用面向对象的思想来操作数据 库.同时,作为后台开发的支撑,的确扮演了一个举足轻重的角色,那么 ...
- SSH三种框架及表示层、业务层和持久层的理解(转)
Struts(表示层)+Spring(业务层)+Hibernate(持久层) SSH:Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts:Struts是一个表示 ...
- 持久层框架JPA与Mybatis该如何选型
一.现状描述 目前java 持久层ORM框架应用最广泛的就是JPA和Mybatis.JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA(底层基于Hibernat ...
- Mybatis详解系列(一)--持久层框架解决了什么及如何使用Mybatis
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository ...
随机推荐
- java关键字transient与volatile小结
本文转自:http://heaven-arch.iteye.com/blog/1160693 transient和volatile两个关键字一个用于对象序列化,一个用于线程同步,都是Java中比较高阶 ...
- 008多对一 关联映射 --- many-to-one
多对一 --- many-to-one 一对多 --- one-to-many 一对一 --- one-to-one 多对多 --- many-to-many 场景:用户和组:从用户角度来,多个用户属 ...
- 关于IOS sourcetree 注册 2017最新hosts
今天用sourcetree git管理工具的时候,第一次打开发现需要注册. 在网上搜索了一下教程,发现现在新版本没有 (我同意协议)这个条款,这就尴尬.我以前没有sourcetree的账号. 试了 ...
- Ajax请求汇总(一)
刚开始结束Ajax请求的时候,那真的是迷迷糊糊,昏天暗地,通过学习的深入和翻阅各种资料.求助度娘,总结一下Ajax请求,与大家分享一下,希望能给学习Ajax的同学一些帮助,废话不多手,直接开始~~~ ...
- springcloud(九):配置中心和消息总线(配置中心终结版)
我们在springcloud(七):配置中心svn示例和refresh中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码发送请求来刷新客户端 ...
- 将Java Web项目部署到远程主机上
这里讲的是Java Web项目 第一步:购买主机,如果是大学生可以购买学生机,一个月9.9元,阿里云ECS服务器,自己选择不同的操作系统和镜像 ,我的选择 得到用户名和密码,可以进行ssh远程登录,登 ...
- ThinkPHP5.0版本和ThinkPHP3.2版本的区别
5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规 ...
- python 之走坑的道路
### python之 继续走函数的坑 上篇文章简单介绍了函数的一些简单的使用,这次继续踩函数的坑1.函数对象 函数其实也可以当做一个参数传给另一个函数,也可以使用赋值的方式来给另一个,而且这两个的内 ...
- [转]tomcat部署
转载博客原文地址: http://www.cnblogs.com/xing901022/p/4463896.html 阅读目录 介绍 静态部署——在tomcat启动时部署 动态部署——在tomcat ...
- NLTK学习笔记(四):自然语言处理的一些算法研究
自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结 ...