java项目经验案例2017_2017.11.5 Java Web ----案例:数据库访问JavaBean的设计

(12)案例----数据库访问JavaBean的设计

例题:数据库操作在一个Web应用程序中的后台处理中占有大比重,设计一组JavaBean封装数据库的基本操作供上层模块调用,提高程序的可移植性。

【分析】:假设操作的数据库名是test,表格是user(userid、username、sex),封装的基本操作包括记录的添加、修改查询全部、按userid查找用户、按userid删除用户

【设计】需要设计以下组件

1.数据库test及其数据库表userUtil.java

2.在类路径(src)下建立属性文件db.properties,存放数据库的基本信息。

3.建立一个获取连接和释放资源的工具类JdbcUtil.java

4.建立类Uesr.java实现信息对象化,体现面向编程

5.在上面的基础建立类UserDao.java封装基本的数据库。其操作如下:

5.1.向数据库中添加用户记录方法:public void add(User user)

5.2. 修改数据库用户记录方法:public void update (User user)

5.3. 删除数据库用户记录方法:public void delete(String uesrId)

5.4.根据id查询用户的方法:public Uesr findUesrById(String userId)

5.5 查询全部用户的方法:public List

【实现】

1.先建立一个“db.properties”文件,在该文件中存放的基本信息有:数据库驱动程序名、数据库连接字符串、数据库用户名、数据库用户密码。

driver=com.mysql.jdbc.Driver //驱动程序名

url=jdbc:mysql://localhost/test?user?userUnicode=true&characterEncoding=utf-8 //String url的字符串

username=root //数据库用户名

password=123456 //数据库密码

2.建立一个获取连接和释放类的工具类JdbcUil.java

package dbc;

import java.sql.*;

import java.util.Properties;

public final class JdbcUtil {

private static String driver;

private static String url;

private static String user;

private static String password;

private static Properties pr=new Properties();

@SuppressWarnings("unused")

private void JdbcUtils(){}

//设计该工具类的静态初始化器中的代码,该代码再装入类时执行,且执行一次

static {

try{

pr.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));

driver=pr.getProperty("driver");

url=pr.getProperty("url");

user=pr.getProperty("username");

password=pr.getProperty("password");

Class.forName(driver);

}catch (Exception e){

throw new ExceptionInInitializerError(e);

}

}

//设计获得连接对象的方法getConnection()

public static Connection getConnection()throws SQLException{

return DriverManager.getConnection(url,user,password);

}

//设计释放结果集、语句和连接的方法free()

public static void free(ResultSet rs,Statement st,Connection conn){

try {

if (rs!=null)

rs.close();

}catch(SQLException e){e.printStackTrace();

}finally {try {if(st!=null)

st.close();

}catch(SQLException e){e.printStackTrace();

}finally {

if(conn!=null)

try{conn.close();

}catch(SQLException e){e.printStackTrace();

}

}

}

}

}

3.建立类User.java 实现记录信息化,基于对象对数据库关系表进行操作

package vo;

public class User {

private String userid; //设计User类的三个私有属性

private String username;

private String sex;

public String getUserid() //Userid属性的get方法

{

return userid;

}

public void setUserid(String userid) //Uesrid属性的set方法

{

this.userid=userid;

}

public String getUsername()

{

return username;

}

public void setUsername(String username)

{

this.username=username;

}

public String getSex()

{

return sex;

}

public void setSex(String sex)

{

this.sex=sex;

}

}

4.建立类UserDao.java 封装基本的数据库操作

package dao;

import java.sql.*;

import java.util.ArrayList;

import java.util.List;

import vo.User;

import dbc.JdbcUtil;

public class UserDao {

//向数据库中添加用户记录方法 add()

public void add(User user)throws Exception{

Connection conn=null;

PreparedStatement ps=null;

try{

conn=JdbcUtil.getConnection();

String sql="insert into user values(?,?,?)";

ps=conn.prepareStatement(sql);

ps.setString(1, user.getUserid());

ps.setString(2, user.getUsername());

ps.setString(3, user.getSex());

ps.executeUpdate();

}finally{JdbcUtil.free(null, ps, conn);}

}

//修改数据库用户记录的方法 update()

public void update(User user)throws Exception{

Connection conn=null;

PreparedStatement ps=null;

try{

conn=JdbcUtil.getConnection();

String sql="update user set username=?,sex=?,where userid=?";

ps=conn.prepareStatement(sql);

ps.setString(1, user.getUsername());

ps.setString(2, user.getSex());

ps.setString(3, user.getUserid());

ps.executeUpdate();

}finally{JdbcUtil.free(null, ps, conn);}

}

//删除数据库用户记录的方法delete()

public void deletes(String userid)throws Exception{

Connection conn=null;

PreparedStatement ps=null;

try{

conn=JdbcUtil.getConnection();

String sql="delete from user where userid=?";

ps=conn.prepareStatement(sql);

ps.setString(1,userid);

ps.executeUpdate();

}finally{JdbcUtil.free(null, ps, conn);}

}

//根据id查询用户的方法 fingUserById()

public User findUserById(String userid)throws Exception{

Connection conn=null;

PreparedStatement ps=null;

ResultSet rs=null;

User user=null;

try{

conn=JdbcUtil.getConnection();

String sql="selete * from user where userid=?";

ps=conn.prepareStatement(sql);

ps.setString(1, userid);//

rs=ps.executeQuery();

if(rs.next()){

user=new User();

user.setUserid(rs.getString(1));

user.setUsername(rs.getString(2));

user.setSex(rs.getString(3));

}

}finally{JdbcUtil.free(rs, ps, conn);}

return user;

}

//查询全部用户的方法QueryAl()

public ListQueryAll()throws Exception{

Connection conn=null;

PreparedStatement ps=null;

ResultSet rs=null;

ListuserList=new ArrayList();

try{

conn=JdbcUtil.getConnection();

String sql="select *from user";

ps=conn.prepareStatement(sql);

rs=ps.executeQuery();

while(rs.next()){

User user=new User();

user.setUserid(rs.getString(1));

user.setUsername(rs.getString(2));

user.setSex(rs.getString(3));

userList.add(user);

}

}finally{JdbcUtil.free(rs,ps,conn);}

return userList;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值