导包
目录结构
编写配置文件
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="c3p0">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/库名</property>
<property name="user">用户名t</property>
<property name="password">密码</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
</named-config>
</c3p0-config>
工具类
package jdbc.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtils {
public static DataSource ds = null;
static {
ds = new ComboPooledDataSource("c3p0");
}
public static DataSource getDataSource() {
return ds;
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
public static void close(Statement stmt, Connection conn, ResultSet set) {
close(stmt, conn);
if (set != null) {
try {
set.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
业务逻辑
package jdbc.dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import jdbc.bean.User;
import jdbc.utils.JdbcUtils;
public class JdbcService {
private QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
//添加用户
public int addUser(String username, String password) throws SQLException {
String sql = "insert into user values (null,?,?)";
int row = qr.update(sql, username, password);
return row;
}
//删除用户
public int deleteUser(int id) throws SQLException {
String sql = "delete from user where id=?";
int row = qr.update(sql, id);
return row;
}
//修改用户
public int updateUser(int id, String password) throws SQLException {
String sql = "update user set password=? where id=?";
int row = qr.update(sql, password, id);
return row;
}
//查找所有
public void selectAll() throws SQLException {
String sql = "select *from user";
List<User> user = qr.query(sql, new BeanListHandler<>(User.class));//此处使用BeanListHandler,封装成实体类对象的集合
for (User u : user) {
System.out.println(u.getId() + "--" + u.getUsername() + "--" + u.getPassword());
}
}
//查询某个人信息
public User selectOneUser(int id) throws SQLException {
String sql = "select *from user where id=?";
User u = qr.query(sql, new BeanHandler<User>(User.class), id);//此处使用 BeanHandler,封装成实体类对象
System.out.println(u.getId() + "--" + u.getUsername() + "--" + u.getPassword());
return u;
}
//模糊查询之通过姓查找
public void select(String xing) throws SQLException{
String sql="select count(*) from user where username like ?";
long count= qr.query(sql, new ScalarHandler<>(), xing+"%");//必须以long接收。 ScalarHandler操作聚合函数时使用
System.out.println(count);
}
}
测试
package jdbc.Test;
import java.util.Scanner;
import jdbc.bean.User;
import jdbc.dao.JdbcService;
public class TestJdbc {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
JdbcService service = new JdbcService();
try {
for (;;) {
System.out.println("请输入1,增加。2,删除。3,修改4,查询全部。5,查询个人。6,查询姓X的人的个数");
switch (sc.next()) {
case "1":
System.out.println("请输入用户名");
String username = sc.next();
System.out.println("请输入密码");
String password = sc.next();
int addRow = service.addUser(username, password);
if (addRow > 0) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
break;
case "2":
System.out.println("请输入id");
int delid = sc.nextInt();
int delRow = service.deleteUser(delid);
if (delRow > 0) {
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
break;
case "3":
System.out.println("请输入id");
int updateid = sc.nextInt();
System.out.println("请输入密码");
String newpwd = sc.next();
int updateRow = service.updateUser(updateid, newpwd);
if (updateRow > 0) {
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
break;
case "4":
service.selectAll();
break;
case "5":
System.out.println("请输入id");
int selectid = sc.nextInt();
User u=service.selectOneUser(selectid);
if(u==null) {
System.out.println("查无此人");
}else {
System.out.println(u.getId() + "--" + u.getUsername() + "--" + u.getPassword());
}
break;
case "6":
System.out.println("请输入姓");
String xing=sc.next();
service.select(xing);
break;
default:
System.out.println("操作异常");
break;
}
}
} catch (Exception e) {
System.out.println("出错了");
e.printStackTrace();
}
}
}
每日贴图