原生dao操作工具类
package com.common.util;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class DaoUtils {
public static <T> List<T> executeSql(Class<T> clazz, String strSql, Object... values) {
List<T> tList = new ArrayList<>();
try {
Connection con = DBUtil.getCon3();
PreparedStatement ps = con.prepareStatement(strSql);
if (values != null && values.length > 0) {
for (int i = 0; i < values.length; i++) {
ps.setObject(i + 1, values[i]);
}
}
if (clazz == null) {
boolean execute = ps.execute();
DBUtil.close(con, ps, null, null);
System.out.println(!execute ? " sql 执行成功 " : "sql 执行失败");
return tList;
}
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Field[] fields = clazz.getDeclaredFields();
T tInstance = clazz.newInstance();
for (Field field : fields) {
field.setAccessible(true);
Object value = rs.getObject(field.getName());
if (value instanceof LocalDateTime) {
value = Date.from(((LocalDateTime) value).atZone(ZoneId.systemDefault()).toInstant());
}
if (value != null) field.set(tInstance, value);
}
tList.add(tInstance);
}
DBUtil.close(con, ps, rs, null);
} catch (SQLException | InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return tList;
}
}
使用案例
@Override
public boolean findUserByNmae(String uname) {
String buffer = "select * from userinfo where username = ? and password = ?";
Object[] values = new Object[]{username, password};
List<UserInfo> userInfos = DaoUtils.executeSql(UserInfo.class, buffer, values);
return userInfos != null && userInfos.size() > 0;
}
@Override
public void updateById(UserInfo userInfo) {
String buffer = "update userinfo set username=?,password=?,age=? where id = ?";
Object[] values = new Object[]{
userInfo.getUsername(),
userInfo.getPassword(),
userInfo.getAge(),
userInfo.getId()};
DaoUtils.executeSql(null, buffer, values);
}
@Override
public void deleteById(int userId) {
DaoUtils.executeSql(null, "delete from userinfo where id = ?", userId);
}