博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring Jdbc自己主动获取主键。
阅读量:4963 次
发布时间:2019-06-12

本文共 2762 字,大约阅读时间需要 9 分钟。

学习了下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
{ private Class
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

转载于:https://www.cnblogs.com/mfrbuaa/p/5153239.html

你可能感兴趣的文章
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
面试题14 调整数组顺序使奇数位于偶数前面
查看>>
grid网格布局
查看>>
flask简单的注册功能
查看>>
JSP常用标签
查看>>
dashucoding记录2019.6.7
查看>>
IOS FMDB
查看>>
编码总结,以及对BOM的理解
查看>>
九涯的第一次
查看>>
PHP5.3的VC9、VC6、Thread Safe、Non Thread Safe的区别
查看>>
Android中全屏或者取消标题栏
查看>>
处理器管理与进程调度
查看>>
页面懒加载
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java zip 中文文件名乱码_java使用zip压缩中文文件名乱码的解决办法
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
kafka的java客户端_KAFKA Producer java客户端示例
查看>>
java -f_java学习笔记(一)
查看>>
java 什么题目好做_用java做这些题目
查看>>
java中的合同打印_比较方法违反了Java 7中的一般合同
查看>>