public class DAO {
// INSERT, UPDATE, DELETE 操作都可以包含在其中
public void update(String sql, Object... args) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = JDBCTools.getConnection();
ps = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.close(null, ps, conn);
} } // 查询一条记录, 返回对应的对象
public <T> T get(Class<T> clazz, String sql, Object... args) {
T entity = null;
// 1获取Connection
Connection conn = null;
// 2 获取PreparedStatement
PreparedStatement ps = null;
// 3填充占位符
ResultSet rs = null;
try {
conn = JDBCTools.getConnection();
ps = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
// 4 进行查询得到rs
rs = ps.executeQuery();
// 5若 ResultSet中有记录,
// 准备一个MAP 键:存放列的别名,值:存放列的值
Map<String, Object> values = new HashMap<String, Object>();
// 6得到ResultSetMetaData对象
ResultSetMetaData rmsd = rs.getMetaData();
// 7处理ResultSet,把指针向下移动一个单位
if (rs.next()) {
// 8 由ResultSetMetaData 对象得到结果集中有多少列
for (int i = 0; i < rmsd.getColumnCount(); i++) {
// 9由ResultSetMetaData得到每一列的别名,由rs得到每一列的值
String columnLabel = rmsd.getColumnLabel(i + 1);
Object columnValue = rs.getObject(i + 1);
// 10 填充Map
values.put(columnLabel, columnValue);
} }
if (values.size() > 0) {
// 11 用反射创建Class对应的对象
entity = clazz.newInstance();
// 12 遍历Map对象,用反射填充对象的属性值:
// 属性名为Map中的key 属性值为Map中的value
for (Map.Entry<String, Object> map : values.entrySet()) {
String fieldName = map.getKey();
Object fieldValue = map.getValue();
BeanUtils.setProperty(entity, fieldName, fieldValue); } } } catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.close(rs, ps, conn);
} return entity; }
}
public class DAOTest {
DAO dao = new DAO(); @Test
public void testUpdate() {
String sql = "INSERT INTO customers(name,email,birth)VALUES(?,?,?)";
dao.update(sql, "XiaoWang", "XiaoWang@guigu.com", new Date(
new java.util.Date().getTime())); } @Test
public void testGet() {
String sql="SELECT flow_id flowId, type, id_card iDCard, "
+ "exam_card examCard, student_name studentName, "
+ "location, grade " + "FROM examstudent WHERE flow_id = ?";
Student stu=dao.get(Student.class, sql, 9);
System.out.println(stu);
}
}

转: https://blog.csdn.net/YL1214012127/article/details/48350107

最新文章

  1. C#之玩转反射
  2. [原]SQLite的学习系列之获取数据库版本二
  3. 机器学习之神经网络模型-上(Neural Networks: Representation)
  4. 无线网破解软件|一键式破解无线网|BT17软件包下载[笔记本+软件就行]
  5. 清除number输入框的上下箭头
  6. UIScrollView代理方法
  7. &lt;abbr&gt;标签的
  8. angular.js封装的文件上传指令
  9. Liunx-cd命令
  10. promisify,promisifyAll,promise.all实现原理
  11. topjui中datagrid增删改查
  12. 对.zip格式的文件进行解压缩
  13. html快速编写
  14. IndexedDB 简单封装
  15. .NET 配置文件实用指南
  16. 通过buildroot+qemu搭建ARM-Linux虚拟开发环境
  17. hadoop2.4.0伪分布式搭建以及分布式关机重启后datanode没起来的解决办法
  18. 课程五(Sequence Models),第一 周(Recurrent Neural Networks) —— 2.Programming assignments:Dinosaur Island - Character-Level Language Modeling
  19. rook 排错记录 + Orphaned pod found kube-controller-manager的日志输出
  20. 在linux上安装tomcat

热门文章

  1. Jmeter学习笔记(十九)——后置处理器之正则表达式的使用
  2. AudioToolbox--AudioQueue实现流播放接口
  3. 元素定位方法之Uiautomator方法
  4. 执行chmod -R 777 / 补救
  5. MySQL/MariaDB数据库的复制加密
  6. Python语言防坑小技巧
  7. Environment类在代码中的使用
  8. Pure C static coding analysis tools
  9. 大数据之路week07--day07 (修改mysql默认编码)
  10. 《exception》第九次团队作业:Beta冲刺与验收准备(大结局)