JDBC操作DAO的通用类
来源:互联网 发布:ubuntu安装中文界面 编辑:程序博客网 时间:2024/06/05 09:37
package com.servlet.dao;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.servlet.entity.Student;
import com.servlet.util.JdbcUtil;
/*
* JDBC操作DAO通用类
*/
public class StudentDao {
// 通用单个对象查询方法
public static Object search(String sql,Object[] params,Class<?> clz){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
if(params != null && params.length > 0){
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
}
rs = ps.executeQuery();
if(!rs.next()){
return null;
}
return doResultSet(rs, clz);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.release(rs, ps, conn);
}
return null;
}
// 集合查询
public static List<?> searchList(String sql,Object[] params,Class<?> clz){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
if(params != null && params.length > 0){
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
}
rs = ps.executeQuery();
return doResultSetList(rs, clz);
} catch (SQLException e) {
e.printStackTrace();
} finally{
JdbcUtil.release(rs,ps,conn);
}
return null;
}
// 利用反射机制处理结果集与实体对象进行对应
private static Object doResultSet(ResultSet rs,Class<?> clz){
try {
ResultSetMetaData metaData = rs.getMetaData(); //元数据
int colCount = metaData.getColumnCount(); //获得列总数
//等价于Student stu = new Student();
Object bean = clz.newInstance(); //实例化对象
for(int i=0;i<colCount;i++){
Object colValue = rs.getObject(i+1); //获取当前列记录
String colName = metaData.getColumnName(i+1); //获取列名
Field f = clz.getDeclaredField(colName);
f.setAccessible(true);
f.set(bean, colValue);
}
return bean;
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
return null;
}
// 利用反射机制处理结果集与实体对象进行对应(多记录查询)
private static List<Object> doResultSetList(ResultSet rs,Class<?> clz){
List<Object> list = new ArrayList<Object>();
try {
while(rs.next()){
ResultSetMetaData metaData = rs.getMetaData(); //元数据
int colCount = metaData.getColumnCount(); //获得列总数
//等价于Student stu = new Student();
Object bean = clz.newInstance(); //实例化对象
for(int i=0;i<colCount;i++){
Object colValue = rs.getObject(i+1); //获取当前列记录
String colName = metaData.getColumnName(i+1); //获取列名
Field f = clz.getDeclaredField(colName);
f.setAccessible(true);
f.set(bean, colValue);
}
list.add(bean);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
return list;
}
// 通用增、改、删方法
public static int update(String sql,Object[] params){ //CUD
Connection conn = null;
PreparedStatement ps = null;
int result = 0;
try {
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
if(params != null && params.length > 0){
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
}
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally{
JdbcUtil.release(null, ps, conn);
}
return result;
}
// 分页
public static List pageStu(int pageIndex,int pageSize){
String sql = "select * from student limit ?,?";
int lim = (pageIndex-1)*pageSize;
Object[] params = {lim,pageSize};
List<Student> list = (List<Student>)StudentDao.searchList(sql, params, Student.class);
// System.out.println(list);
return list;
}
// 总记录书
public static long totalstu(){
String sql = "select ? from student";
Object[] params = {"StudentNo"};
List<Student> list = (List<Student>)StudentDao.searchList(sql, params, Student.class);
// System.out.println(list.size());
long totalnum = list.size();
return totalnum;
}
// test
public static void main(String[] args) {
// 单条查询
// String sql = "select * from student where StudentName=?";
// Object[] params = {"袁华"};
// Student stu = (Student)StudentDao.search(sql, params, Student.class);
// System.out.println(stu);
// 多条查询
// String sql = "select * from student where GradeId>? and Sex=?";
// Object[] params = {2,1};
// List<Student> list = (List<Student>)StudentDao.searchList(sql, params, Student.class);
// System.out.println(list);
// 增加
// String sql = "insert into student(StudentNo,StudentName) values(?,?)";
// Object[] params = {1030,"毛泽东"};
// int result = StudentDao.update(sql, params);
// if(result>0){
// System.out.println("插入成功");
// }else {
// System.out.println("插入失败");
// }
// 更改
// String sql = "update student set Phone=? where StudentName=?";
// Object[] params = {"13037230989","袁华"};
// int result = StudentDao.update(sql, params);
// if(result>0){
// System.out.println("更新成功");
// }else {
// System.out.println("更新失败");
// }
// 删除
// String sql = "delete from student where StudentNo>=?";
// Object[] params = {1028};
// int result = StudentDao.update(sql, params);
// if(result>0){
// System.out.println("删除成功");
// }else {
// System.out.println("删除失败");
// }
// 分页
// StudentDao.pageStu(2, 5);
// StudentDao.totalstu();
}
}
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.servlet.entity.Student;
import com.servlet.util.JdbcUtil;
/*
* JDBC操作DAO通用类
*/
public class StudentDao {
// 通用单个对象查询方法
public static Object search(String sql,Object[] params,Class<?> clz){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
if(params != null && params.length > 0){
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
}
rs = ps.executeQuery();
if(!rs.next()){
return null;
}
return doResultSet(rs, clz);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.release(rs, ps, conn);
}
return null;
}
// 集合查询
public static List<?> searchList(String sql,Object[] params,Class<?> clz){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
if(params != null && params.length > 0){
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
}
rs = ps.executeQuery();
return doResultSetList(rs, clz);
} catch (SQLException e) {
e.printStackTrace();
} finally{
JdbcUtil.release(rs,ps,conn);
}
return null;
}
// 利用反射机制处理结果集与实体对象进行对应
private static Object doResultSet(ResultSet rs,Class<?> clz){
try {
ResultSetMetaData metaData = rs.getMetaData(); //元数据
int colCount = metaData.getColumnCount(); //获得列总数
//等价于Student stu = new Student();
Object bean = clz.newInstance(); //实例化对象
for(int i=0;i<colCount;i++){
Object colValue = rs.getObject(i+1); //获取当前列记录
String colName = metaData.getColumnName(i+1); //获取列名
Field f = clz.getDeclaredField(colName);
f.setAccessible(true);
f.set(bean, colValue);
}
return bean;
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
return null;
}
// 利用反射机制处理结果集与实体对象进行对应(多记录查询)
private static List<Object> doResultSetList(ResultSet rs,Class<?> clz){
List<Object> list = new ArrayList<Object>();
try {
while(rs.next()){
ResultSetMetaData metaData = rs.getMetaData(); //元数据
int colCount = metaData.getColumnCount(); //获得列总数
//等价于Student stu = new Student();
Object bean = clz.newInstance(); //实例化对象
for(int i=0;i<colCount;i++){
Object colValue = rs.getObject(i+1); //获取当前列记录
String colName = metaData.getColumnName(i+1); //获取列名
Field f = clz.getDeclaredField(colName);
f.setAccessible(true);
f.set(bean, colValue);
}
list.add(bean);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
return list;
}
// 通用增、改、删方法
public static int update(String sql,Object[] params){ //CUD
Connection conn = null;
PreparedStatement ps = null;
int result = 0;
try {
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
if(params != null && params.length > 0){
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
}
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally{
JdbcUtil.release(null, ps, conn);
}
return result;
}
// 分页
public static List pageStu(int pageIndex,int pageSize){
String sql = "select * from student limit ?,?";
int lim = (pageIndex-1)*pageSize;
Object[] params = {lim,pageSize};
List<Student> list = (List<Student>)StudentDao.searchList(sql, params, Student.class);
// System.out.println(list);
return list;
}
// 总记录书
public static long totalstu(){
String sql = "select ? from student";
Object[] params = {"StudentNo"};
List<Student> list = (List<Student>)StudentDao.searchList(sql, params, Student.class);
// System.out.println(list.size());
long totalnum = list.size();
return totalnum;
}
// test
public static void main(String[] args) {
// 单条查询
// String sql = "select * from student where StudentName=?";
// Object[] params = {"袁华"};
// Student stu = (Student)StudentDao.search(sql, params, Student.class);
// System.out.println(stu);
// 多条查询
// String sql = "select * from student where GradeId>? and Sex=?";
// Object[] params = {2,1};
// List<Student> list = (List<Student>)StudentDao.searchList(sql, params, Student.class);
// System.out.println(list);
// 增加
// String sql = "insert into student(StudentNo,StudentName) values(?,?)";
// Object[] params = {1030,"毛泽东"};
// int result = StudentDao.update(sql, params);
// if(result>0){
// System.out.println("插入成功");
// }else {
// System.out.println("插入失败");
// }
// 更改
// String sql = "update student set Phone=? where StudentName=?";
// Object[] params = {"13037230989","袁华"};
// int result = StudentDao.update(sql, params);
// if(result>0){
// System.out.println("更新成功");
// }else {
// System.out.println("更新失败");
// }
// 删除
// String sql = "delete from student where StudentNo>=?";
// Object[] params = {1028};
// int result = StudentDao.update(sql, params);
// if(result>0){
// System.out.println("删除成功");
// }else {
// System.out.println("删除失败");
// }
// 分页
// StudentDao.pageStu(2, 5);
// StudentDao.totalstu();
}
}
0 0
- JDBC操作DAO的通用类
- 通用JDBC-Dao
- JDBC数据库通用DAO
- java JDBC通用dao
- JDBC数据库通用DAO
- Spring-JDBC通用Dao
- JDBC通用操作类
- 编写通用的DAO类
- 做个通用的JDBC-DAO类,有点像Hibernate的雏形
- Java反射结合JDBC写的一个通用DAO
- jdbc随手笔记-对于dao通用方法的抽取
- JDBC连接数据库之编写通用的Dao(7)
- Hibernate_Spring中通用的DAO类
- java 反射写的 通用DAO 类
- 通用的DAO雏形
- Hibernate的通用dao
- Hibernate的通用dao
- Hibernate封装通用数据操作基类DAO
- 修改android设备号
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- iOS开发之NSNotificationCenter(通知)使用介绍
- mysql的列类型
- Java异常使用
- JDBC操作DAO的通用类
- 微信统一下单接口body为中文,报【签名错误】的解决办法
- java中volatile关键字的含义
- 实现应用对话框主题的关于 Activity
- java打包下载
- 欢迎使用CSDN-markdown编辑器
- UIView的层次关系
- LinearLayout 宽高设置
- 二叉树遍历129.Sum Root to Leaf Numbers