jdbc增删改查的工具类
来源:互联网 发布:mac设置隐藏文件夹 编辑:程序博客网 时间:2024/06/05 10:07
package com.yanshu.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.yanshu.pojo.Emp;
public class JdbcService {
/**
* 执行增删改的方法
* @param ps
* @param par
*/
public static void setUpdate(PreparedStatement ps,Object [] par)
{
if(par==null) return;
try {
for(int i=0;i<par.length;i++)
{
ps.setObject(i+1, par[i]);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* insert update delete 的操作方法
用法:
public static void addNew(Emp emp)
{
String sql="insert into emp(name,hobas) values(?,?)";
update(sql,emp.getName(),emp.getHobas());
//Emp emp=new Emp();
//emp.setName("2");
//emp.setHobas("2");
//JdbcUtil.addNew(emp);
}
---添加方法
String sql="insert into emp(name) values(?) ";
//new Date(new java.util.Date().getTime())
exeupdate(sql, "23");
* @param sql
* @param objects
*/
public static void exeupdate(String sql,Object...objects)
{
Connection conn=null;
PreparedStatement ps=null;
try {
conn=JdbcUtil.getConn();
ps=conn.prepareStatement(sql);
for(int i=0;i<objects.length;i++)
{
ps.setObject(i+1, objects[i]);
}
ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JdbcUtil.closeConn(null, null, null, ps, conn);
}
}
/**
* 查询一条记录返回对应的对象
* @1.获取connection
* @2.获取PreparedStatement
* @3.填充占位符
* @4.进行查询,得到ResultSet
* @5.若ResultSet中有记录,准备一个Map<String,Object>:键:存放列的别名,值:存放列的值
* @6.得到ResultSetMetaData对象
* @7.处理ResultSet,把指针向下移动一个单位
* @8.由ResultSetMetaData对象得到结果集中有多少列
* @9.由ResultSetMetaData得到每一个的列名,由ResultSet得到具体每一列的值
* @10.填充Map对象
* @11.用反射创建class对应的对象
* @12.遍历Map对象,用反射填充对象的属性值,属性名为map中的key,值
* @param clazz
* @param sql
* @param objects
* @return
* String sql="select name,id from emp where id=? ";
Emp emp=get(Emp.class, sql,38);
*/
public static <T>T get(Class<T> clazz,String sql,Object ...objects)
{
T entity=null;
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
//1.获取connection
conn=JdbcUtil.getConn();
//* @2.获取PreparedStatement
ps=conn.prepareStatement(sql);
//* @3.填充占位符
for(int i=0;i<objects.length;i++)
{
ps.setObject(i+1, objects[i]);
}
//* @4.进行查询,得到ResultSet
rs=ps.executeQuery();
// * @5.若ResultSet中有记录,准备一个Map<String,Object>:键:存放列的别名,值:存放列的值
if(rs.next())
{
Map<String,Object> map=new HashMap<String,Object>();
//* @6.得到ResultSetMetaData对象
ResultSetMetaData rsmd=rs.getMetaData();
// * @7.处理ResultSet,把指针向下移动一个单位
// * @8.由ResultSetMetaData对象得到结果集中有多少列
int columnCount=rsmd.getColumnCount();
// * @9.由ResultSetMetaData得到每一个的列名,由ResultSet得到具体每一列的值
for(int i=0;i<columnCount;i++)
{
String columnLabel=rsmd.getColumnLabel(i+1);
/* System.out.println("columnLabel"+columnLabel);*/
Object columnValue=rs.getObject(i+1);
// * @10.填充Map对象
map.put(columnLabel, columnValue);
System.out.println(columnLabel+"put"+columnValue);
}
// * @11.用反射创建class对应的对象
entity=clazz.newInstance();
// * @12.遍历Map对象,用反射填充对象的属性值,属性名为map中的key,值
for(Map.Entry<String, Object> en:map.entrySet())
{
String propertyName=en.getKey();
Object value=en.getValue();
ReflectionUtils.setFieldValue(entity, propertyName, value);
}
}
System.out.println(entity+"entity");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return entity;
}
public static void main(String[] args) {
/*String sql="insert into emp(name) values(?) ";
//new Date(new java.util.Date().getTime())
exeupdate(sql, "23");
System.out.println("9999");*/
String sql="select name,id from emp where id=? ";
Emp emp=get(Emp.class, sql,38);
}
public void getAll()
{
try {
//1.获取connection
//* @2.获取PreparedStatement
//* @3.填充占位符
//* @4.进行查询,得到ResultSet
// * @5.若ResultSet中有记录,准备一个Map<String,Object>:键:存放列的别名,值:存放列的值
//* @6.得到ResultSetMetaData对象
// * @7.处理ResultSet,把指针向下移动一个单位
// * @8.由ResultSetMetaData对象得到结果集中有多少列
// * @9.由ResultSetMetaData得到每一个的列名,由ResultSet得到具体每一列的值
// * @10.填充Map对象
// * @11.用反射创建class对应的对象
// * @12.遍历Map对象,用反射填充对象的属性值,属性名为map中的key,值
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.yanshu.pojo.Emp;
public class JdbcService {
/**
* 执行增删改的方法
* @param ps
* @param par
*/
public static void setUpdate(PreparedStatement ps,Object [] par)
{
if(par==null) return;
try {
for(int i=0;i<par.length;i++)
{
ps.setObject(i+1, par[i]);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* insert update delete 的操作方法
用法:
public static void addNew(Emp emp)
{
String sql="insert into emp(name,hobas) values(?,?)";
update(sql,emp.getName(),emp.getHobas());
//Emp emp=new Emp();
//emp.setName("2");
//emp.setHobas("2");
//JdbcUtil.addNew(emp);
}
---添加方法
String sql="insert into emp(name) values(?) ";
//new Date(new java.util.Date().getTime())
exeupdate(sql, "23");
* @param sql
* @param objects
*/
public static void exeupdate(String sql,Object...objects)
{
Connection conn=null;
PreparedStatement ps=null;
try {
conn=JdbcUtil.getConn();
ps=conn.prepareStatement(sql);
for(int i=0;i<objects.length;i++)
{
ps.setObject(i+1, objects[i]);
}
ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JdbcUtil.closeConn(null, null, null, ps, conn);
}
}
/**
* 查询一条记录返回对应的对象
* @1.获取connection
* @2.获取PreparedStatement
* @3.填充占位符
* @4.进行查询,得到ResultSet
* @5.若ResultSet中有记录,准备一个Map<String,Object>:键:存放列的别名,值:存放列的值
* @6.得到ResultSetMetaData对象
* @7.处理ResultSet,把指针向下移动一个单位
* @8.由ResultSetMetaData对象得到结果集中有多少列
* @9.由ResultSetMetaData得到每一个的列名,由ResultSet得到具体每一列的值
* @10.填充Map对象
* @11.用反射创建class对应的对象
* @12.遍历Map对象,用反射填充对象的属性值,属性名为map中的key,值
* @param clazz
* @param sql
* @param objects
* @return
* String sql="select name,id from emp where id=? ";
Emp emp=get(Emp.class, sql,38);
*/
public static <T>T get(Class<T> clazz,String sql,Object ...objects)
{
T entity=null;
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
//1.获取connection
conn=JdbcUtil.getConn();
//* @2.获取PreparedStatement
ps=conn.prepareStatement(sql);
//* @3.填充占位符
for(int i=0;i<objects.length;i++)
{
ps.setObject(i+1, objects[i]);
}
//* @4.进行查询,得到ResultSet
rs=ps.executeQuery();
// * @5.若ResultSet中有记录,准备一个Map<String,Object>:键:存放列的别名,值:存放列的值
if(rs.next())
{
Map<String,Object> map=new HashMap<String,Object>();
//* @6.得到ResultSetMetaData对象
ResultSetMetaData rsmd=rs.getMetaData();
// * @7.处理ResultSet,把指针向下移动一个单位
// * @8.由ResultSetMetaData对象得到结果集中有多少列
int columnCount=rsmd.getColumnCount();
// * @9.由ResultSetMetaData得到每一个的列名,由ResultSet得到具体每一列的值
for(int i=0;i<columnCount;i++)
{
String columnLabel=rsmd.getColumnLabel(i+1);
/* System.out.println("columnLabel"+columnLabel);*/
Object columnValue=rs.getObject(i+1);
// * @10.填充Map对象
map.put(columnLabel, columnValue);
System.out.println(columnLabel+"put"+columnValue);
}
// * @11.用反射创建class对应的对象
entity=clazz.newInstance();
// * @12.遍历Map对象,用反射填充对象的属性值,属性名为map中的key,值
for(Map.Entry<String, Object> en:map.entrySet())
{
String propertyName=en.getKey();
Object value=en.getValue();
ReflectionUtils.setFieldValue(entity, propertyName, value);
}
}
System.out.println(entity+"entity");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return entity;
}
public static void main(String[] args) {
/*String sql="insert into emp(name) values(?) ";
//new Date(new java.util.Date().getTime())
exeupdate(sql, "23");
System.out.println("9999");*/
String sql="select name,id from emp where id=? ";
Emp emp=get(Emp.class, sql,38);
}
public void getAll()
{
try {
//1.获取connection
//* @2.获取PreparedStatement
//* @3.填充占位符
//* @4.进行查询,得到ResultSet
// * @5.若ResultSet中有记录,准备一个Map<String,Object>:键:存放列的别名,值:存放列的值
//* @6.得到ResultSetMetaData对象
// * @7.处理ResultSet,把指针向下移动一个单位
// * @8.由ResultSetMetaData对象得到结果集中有多少列
// * @9.由ResultSetMetaData得到每一个的列名,由ResultSet得到具体每一列的值
// * @10.填充Map对象
// * @11.用反射创建class对应的对象
// * @12.遍历Map对象,用反射填充对象的属性值,属性名为map中的key,值
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
阅读全文
0 0
- jdbc增删改查的工具类
- jdbc的增删改查
- JDBC的增删改查
- jdbc的增删改查
- JDBC的增删改查
- JDBC 增删改查工具类 和测试类
- Jdbc 增删改查 工具类和测试类
- 封装JDBC的一个通用增删改查工具类,将数据集rs转为list
- DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
- Jdbc 增删改查
- jdbc增删改查
- JDBC 增删改查
- jdbc增删改查
- jdbc增删查改
- JDBC 增删改查
- jdbc:增删改查
- jdbc---增删改查
- jdbc的增删改查的使用
- selenium webdriver 学习总结-JUnit4 入门_补充Annotation(三)
- java反射学习(结合工厂方法)
- c冒泡排序
- selenium webdriver 学习总结-JUnit4 入门_补充枚举 (三)
- C++ explicit关键字
- jdbc增删改查的工具类
- 小工具:火车票查询
- Java多线程--对thread.join的理解
- 今后的职业规划
- 自定义View自定义标题
- 使用IntelliJ IDEA 14和Maven创建java web项目
- LinkedList
- selenium webdriver 学习总结-Selenium 控制测试流_补充显示等待(五)
- HDU6186-CS Course