spring Jdbc自动获取主键。

来源:互联网 发布:苹果电脑绘画软件 编辑:程序博客网 时间:2024/05/17 18:13

学习了下springjdbc,感觉挺实用的,相对来说springjdbc 扩展性相当好了



package com.power.dao;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.PreparedStatementCreator;import org.springframework.jdbc.support.GeneratedKeyHolder;import org.springframework.jdbc.support.KeyHolder;import com.power.sql.UpdateSql;import com.power.sql.UpdateSql.SqlType;import com.power.utils.ArrayAssistant;import com.power.utils.FieldAssistant;import com.power.utils.TransformUtils;@SuppressWarnings("unchecked")public class BaseDao<T>{private Class<T> entityClass ; public BaseDao() {this.entityClass = null;Class<?> c = getClass();Type type = c.getGenericSuperclass();if (type instanceof ParameterizedType) {Type[] parameterizedType = ((ParameterizedType) type).getActualTypeArguments();this.entityClass = (Class<T>) parameterizedType[0];}}@Autowiredprivate JdbcTemplate jdbcTemplate ;  private UpdateSql updateSql ; public Integer insert(T t){updateSql = new UpdateSql(SqlType.INSERT , t) ;  if(null == updateSql.getIdName()){return jdbcTemplate.update( updateSql.getSqlBuffer() , ArrayAssistant.asArray(updateSql.getParam()) ) ;}KeyHolder holder = new GeneratedKeyHolder() ;jdbcTemplate.update(new PreparedStatementCreator() {public PreparedStatement createPreparedStatement(Connection conn)throws SQLException {PreparedStatement ps = conn.prepareStatement( updateSql.getSqlBuffer() , new String[] { updateSql.getIdName() } ) ; List<Object> param = updateSql.getParam() ;int size = param.size() ;for(int x=1;x<=size;x++){ps.setObject(x, param.get(x-1)); }return ps ;}} , holder ) ; int id = TransformUtils.toInt(holder.getKey()) ;FieldAssistant.writeField(updateSql.getIdName(),  t , id, true); return TransformUtils.toInt(holder.getKey()) ;  }public int update(T t){updateSql = new UpdateSql(SqlType.UPDATE , t) ;  int result = jdbcTemplate.update(updateSql.getSqlBuffer(), ArrayAssistant.asArray(updateSql.getParam())) ;return result ;  }public int delete(T t){updateSql = new UpdateSql(SqlType.DELETE , t) ;  int result = jdbcTemplate.update(updateSql.getSqlBuffer(), ArrayAssistant.asArray(updateSql.getParam())) ;return result ;  }public int delete(Integer id){updateSql = new UpdateSql( entityClass ) ;  int result = jdbcTemplate.update(updateSql.getSqlBuffer(), id ) ; return result ; }}



UpdateSql 类在:http://blog.csdn.net/hfmbook/article/details/41290641
转载请表名出处:http://blog.csdn.net/hfmbook

1 0
原创粉丝点击