package com.hui.dao.impl;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;
import com.hui.dao.IBaseDao;
import com.hui.pop.PropertyEditor;
import com.hui.vo.HUserType;
import com.hui.vo.HUsers;
import com.hui.vo.HXswen;
@SuppressWarnings("unchecked")
public class BaseDao implements IBaseDao
{
private final Properties properties = DtString.getProperties();
private final String driver =properties.get("driver").toString();
private final String url=properties.get("url").toString();
private final String user =properties.get("user").toString();
private final String password=properties.get("password").toString();
/**
* 获得数据库连接
* @return
*/
public Connection getConn() {
Connection conn=null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭数据库连接 结果集 预编译ps
* @param rs
* @param ps
* @param conn
*/
public void closeSession(ResultSet rs, PreparedStatement ps, Connection conn) {
try {
if (rs != null) {
rs.close();
rs=null;
}
if (ps != null) {
ps.close();
ps=null;
}
if (conn != null) {
conn.close();
conn=null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 执行 修改 保存 删除的通用方法
*/
public int saveOrUpdate(String sql,Object[] objects)
{
int exce=0;
PreparedStatement ps=null;
Connection conn=null;
try {
conn=this.getConn();
ps=conn.prepareStatement(sql);
if(objects!=null)
{
for (int i = 0; i < objects.length; i++)
{
ps.setObject(i+1, objects[i]);
}
}
exce=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.closeSession(null, ps, conn);
}
return exce;
}
/**
* 执行查询 通用的查询方法
* @param sql
* @param objects
* @param pageNum
* @param pageSize
* @return
*/
public Map[] query(String sql,Object[] objects)
{
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
Map[] maps=null;
try {
conn=this.getConn();
ps=conn.prepareStatement(sql);
if(objects!=null)
{
for (int i = 0; i < objects.length; i++)
{
ps.setObject(i+1, objects[i]);
}
}
rs=ps.executeQuery();
Result result=ResultSupport.toResult(rs);
maps=result.getRows();
}
catch(SQLException e)
{
e.printStackTrace();
}finally
{
this.closeSession(rs, ps, conn);
}
return maps;
}
/**
* 查询总条数 查询统计
total =rs.getInt(1);
* @param sql
* @param objects
* @param pageSize
* @return
*/
public int getCount(String sql,Object[] objects)
{
//总条数
int total=0;
ResultSet ts=null;
PreparedStatement ps=null;
Connection conn=null;
try {
conn=this.getConn();
ps=conn.prepareStatement(sql);
if(objects!=null)
{
for (int i = 0; i < objects.length; i++)
{
ps.setObject(i+1, objects[i]);
}
}
ts=ps.executeQuery();
if(ts.next())
{
total =ts.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
this.closeSession(null, ps, conn);
}
return total;
}
/**
* 保存信息 并返回当前的ID
*/
public int saveObject(String sql, Object[] obj)
{
int exce=0; PreparedStatement ps=null;
Connection conn=null;
try {
conn=this.getConn();
ps=conn.prepareStatement(sql);
if(obj!=null)
{
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
}
ps.execute();
ps.clearParameters();
ResultSet rs=ps.executeQuery("select @@IDENTITY");
if(rs.next())
{
exce=rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.closeSession(null, ps, conn);
}
return exce;
}
class DtString {
public static Properties getProperties()
{
Properties properties = new Properties();
InputStream fis = PropertyEditor.class.getResourceAsStream("/data.properties");
try {
properties.load(fis);// 将属性文件流装载到Properties对象中
fis.close();// 关闭流
}catch (IOException e) {
e.printStackTrace();
}
return properties;
}
}
JDBC操作数据库CRUD
最新推荐文章于 2021-03-09 13:14:00 发布