您的位置:首页 > 其它

JDBC的轻量级封装DBUtils开源组件的使用(二)

2013-07-07 02:46 661 查看
在开源中国上看到站长的博客,说开源中国是用java+mysql写的,没有用庞大的Hibernate,而是用的DbUtils组件,于是对这个组件产生了兴趣,根据“JDBC的轻量级封装DBUtils开源组件的使用(一)”简单地学习了一下。下面是写的一个Demo:
TestDbUtils.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
/**
* @author 张省三
* E-mail:xingsan.zhang@gmail.com
* 2013-7-6 下午10:17:32
*/
public class TestDbUtils {
private static String driverClassName = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/liuyanban";
private static String user = "root";
private static String password = "fendou";
private static Connection conn = null;

//DBCP数据源
/*public static BasicDataSource setupDataSource(String connectURI) {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(driverClassName);
ds.setUsername(user);
ds.setPassword(password);
ds.setUrl(connectURI);
//ds.setMinIdle(5);
return ds;
}*/
QueryRunner runner = new QueryRunner();
/**
* 得到连接方法
*/
public static void getConn(){
if(DbUtils.loadDriver(driverClassName)){//加载驱动
try {
conn = DriverManager.getConnection(url, user, password);//得到连接
} catch (SQLException e) {
System.out.println("连接失败!");
e.printStackTrace();
}
}
}
/**
* 增、删、改操作方法
*/
public void update(){
getConn();//得到连接
boolean b = false;
String sql = "insert into user (username,password) values(?,?)";
try {
if(runner.update(conn, sql, "xiaofeng","123456") > 0){//如果返回结果大于0,则执行成功
System.out.println("插入成功!");
b = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
DbUtils.close(conn);//关闭连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//根据主键值查询,因为查询得到的结果只可能有一条记录,所以这里使用BeanListHandler
BeanHandler bh = null;
@SuppressWarnings("unchecked")
/**
* 查询方法,返回一条记录
*/
public User select(int userId){
getConn();
User user = null;
String sql = "select *from user where userId = ?";
bh = new BeanHandler<User>(User.class);//实例化BeanHandler对象
try {
user = runner.query(conn, sql, bh, userId);//查询
System.out.println(user.getUsername()+"---"+user.getPassword());
return user;
} catch (SQLException e) {
System.out.println("查询出错!");
e.printStackTrace();
} finally{
try {
DbUtils.close(conn);//关闭连接
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
//返回一个集合,用BeanListHandler类
BeanListHandler blh = null;
@SuppressWarnings("unchecked")
/**
* 查询方法,返回一个集合
*/
public List select(){
getConn();
List<User> list = null;
String sql = "select *from user";
blh = new BeanListHandler<User>(User.class);//实例化BeanListHandler对象
try {
list = runner.query(conn, sql, blh);//查询,返回List
for(User user : list){
System.out.println(user.getUsername()+"---"+user.getPassword());
}
return list;
} catch (SQLException e) {
System.out.println("查询出错!");
e.printStackTrace();
} finally{
try {
DbUtils.close(conn);//关闭连接
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
public static void main(String[] args) {
//new TestDbUtils().update();
//new TestDbUtils().select(1);
new TestDbUtils().select();
}
}
User.java
/**
* @author 张省三
* E-mail:xingsan.zhang@gmail.com
* 2013-7-7 上午01:56:49
*/
public class User {
private String username;
private String password;
private String email;
private int isAdmin;
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getIsAdmin() {
return isAdmin;
}
public void setIsAdmin(int isAdmin) {
this.isAdmin = isAdmin;
}

}


本文出自 “quietboy's blog” 博客,请务必保留此出处http://quietboy.blog.51cto.com/6711298/1242828
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: