java反射对数据库进行增删改查_使用cglib和JAVA反射实现AOP操作数据库增删改查的简单功能...

1 packagecom.mrlu.concurrency.sqloperation;2

3 importjava.lang.reflect.Field;4 import java.sql.*;5 importjava.util.HashMap;6 importjava.util.LinkedList;7 importjava.util.List;8 importjava.util.Map;9

10 /**

11 * Created by stefan on 15-12-21.

* 内部处理异常,无须抛到DAO去,DAO也不关心数据库操作异常12 */

13 public classSQLSessionFactory{14 private Connection connection = null;15 private PreparedStatement preparedStatement = null;16 private ResultSet resultSet = null;17

18 public voidinsert(String sql, Object[] args){19 System.out.println("[SQLSessionFactory] insert into table goods....");20 try{21 preparedStatement =connection.prepareStatement(sql);22 for(int i=0; i

33 public voidupdate(String sql, Object[] args){34 try{35 System.out.println("[SQLSessionFactory] update table goods....");36 preparedStatement =connection.prepareStatement(sql);37 for(int i=0; i

48 public Listselect(String sql, Object[] args, Class returnType){49 List list = null;50 try{51 System.out.println("[SQLSessionFactory] select table goods....");52 preparedStatement =connection.prepareStatement(sql);53 for (int i = 0; i

59 List> result = new LinkedList<>();60 ResultSetMetaData metaData =resultSet.getMetaData();61 int columnCount =metaData.getColumnCount();62 while(resultSet.next()) {63 Map maps = new HashMap<>();64 for (int i = 0; i

77 private List transferResultToObject(List>result, Class returnType) { //此处用到了泛型(方法返回值泛型)和反射, 泛型需要注意类型擦除78 Field[] fields =returnType.getDeclaredFields();79 List resultObject = new LinkedList<>();80 try{81 for (Mapmap: result) {82 Object eachResult = returnType.newInstance();83 for(Field field : fields) {84 field.setAccessible(true);85 Object object =map.get(field.getName());86 field.set(eachResult, object);87 }88 resultObject.add(eachResult);89 }90 }catch(Exception e){91 e.printStackTrace();92 }93 returnresultObject;94 }95

96 publicConnection getConnection() {97 returnconnection;98 }99

100 public voidsetConnection(Connection connection) {101 this.connection =connection;102 }103

104 publicPreparedStatement getPreparedStatement() {105 returnpreparedStatement;106 }107

108 public voidsetPreparedStatement(PreparedStatement preparedStatement) {109 this.preparedStatement =preparedStatement;110 }111

112 publicResultSet getResultSet() {113 returnresultSet;114 }115

116 public voidsetResultSet(ResultSet resultSet) {117 this.resultSet =resultSet;118 }119 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值