java jdbc Dao层
优化Java jdbc连接(使用Dao优化)
提示:以下是本篇文章正文内容,下面案例可供参考
一.Dao是什么?
Dao主要是为了提高数据库操作的执行效率和提高代码的复用性,将整体重新为封装一个Dao层,也就是数据访问层 ,用来持续访问数据库.
二.加载连接引擎与连接方法
package com.cn.TBproject;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
public class DbUtil {
public static String url = null; //jdbc:oracle:thin:@127.0.0.1:1521:orcl
public static String user = null; //USER2
public static String pwd = null; //888888
static
{
try{
Properties pro = new Properties();
pro.load(User_db.class.getResourceAsStream("dbip.properties"));
url = pro.getProperty("url");
user = pro.getProperty("user");
pwd = pro.getProperty("pwd");
Class.forName(pro.getProperty("driver"));
}catch(Exception e){
e.printStackTrace();
}
}
public static Connection getConnection()throws Exception
{
return DriverManager.getConnection(url, user, pwd);
}
public static void close(ResultSet rs,Connection con,PreparedStatement pre){
try{
if (rs != null)
{
rs.close();
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(con != null)
{
con.close();
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(pre != null)
{
pre.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
1.以连接Oracle数据库为例
数据库内有User1用户表,字段为:username,password,powers
代码如下(示例):
##1.编写Java BaseDao
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BaseDao {
protected Connection con = null;
//防止SQL注入
PreparedStatement pre = null;
protected ResultSet rs = null;
private void iniPreparedStatement(String sql,Object ... objs)throws Exception{
//获取结果集
pre = con.prepareStatement(sql);
for(int i = 1;i <= objs.length;i++){
pre.setObject(i, objs[i-1]);
}
}
//更新数据
public int executeUpdate(String sql,Object ... objs ) throws Exception{
iniPreparedStatement(sql, objs);
return pre.executeUpdate();
}
//查询数据
public void executeQuery(String sql,Object ... objs) throws Exception{
iniPreparedStatement(sql, objs);
rs=pre.executeQuery();
}
}
2.编写Dao继承BaseDao
代码如下(示例):
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
public class UserDao extends BaseDao {
public UserDao(Connection con){
this.con = con;
}
public void insert(User_db us){
try{
String sql = "insert into user1(username,password) values (?,?)";
executeUpdate(sql, us.getUsername(),us.getPassword());
}catch(Exception e){
e.printStackTrace();
}
}
//查询表内所有内容
public List<User_db> Select()throws Exception{
List<User_db> Qulist = new ArrayList<User_db>();
String sql = "select * from user1";
executeQuery(sql);
User_db Us = null;
while(rs.next())
{
Us = new User_db();
Us.setUsername(rs.getString("username"));
Us.setPassword(rs.getString("password"));
Us.setPowers(rs.getString("powers"));
Qulist.add(Us);
}
return Qulist;
}
//根据条件查询
public List<User_db> Where(String conditions)throws Exception{
List<User_db> Qulist = new ArrayList<User_db>();
String sql = "select * from user1 where username = ?";
executeQuery(sql,conditions);
User_db Us = null;
while(rs.next())
{
Us = new User_db();
Us.setUsername(rs.getString("username"));
Us.setPassword(rs.getString("password"));
Us.setPowers(rs.getString("powers"));
Qulist.add(Us);
}
rs.close();
return Qulist;
}
}
该处使用的url网络请求的数据。
##1.编写User_db类
用于获取数据库的字段值
package com.cn.TBproject;
public class User_db {
private String username = null;
private String password = null;
private String powers = null;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPowers() {
return powers;
}
public void setPowers(String powers) {
this.powers = powers;
}
public User_db(){
}
public User_db(String username,String password){
this.username = username;
this.password = password;
}
}
提示:代码仅供参考,理解其中原理即可…