zoukankan      html  css  js  c++  java
  • spring Jdbc自己主动获取主键。

    学习了下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]; } } @Autowired private 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

  • 相关阅读:
    bzoj1178/luogu3626 会议中心 (倍增+STL::set)
    suoi31 最近公共祖先2 (倍增lca)
    luogu4155/bzoj4444 国旗计划 (倍增)
    [BZOJ1864][Zjoi2006]三色二叉树
    [Luogu3070][USACO13JAN]岛游记Island Travels
    [Luogu2458][SDOI2006]保安站岗
    [BZOJ1191][HNOI2006]超级英雄Hero
    [BZOJ1050][HAOI2006]旅行
    [Luogu2973][USACO10HOL]赶小猪Driving Out the Piggi…
    [BZOJ1833][ZJOI2010]数字计数
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5153239.html
Copyright © 2011-2022 走看看