import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
/**
* 使用QueryRunner实现对分类表(sort)的增删改查操作,现要求如下:
* 1.创建Sort类,有私有属性id(int类型)、sname(String 类型)、parent(String类型)、sdesc(String
* 类型);提供相应的get/set方法和构造方法并重写toString()方法;
* 2.定义添加方法public static void addSort(Sort sort),将sort对象的所有属性添加到数据库表sort中。
* 3.定义更新方法public static void editSort(Sort sort),根据sort对象的sid值修改数据表sort中对应的记录。
* 4.定义查找方法public static List selectSnameByParent(String parent),根据 指定的parent查找数据库表中对应的所有sname值。
* 5.定义删除方法public static void deleteSort(int sid),根据sid删除数据表sort中所对应的记录。
* 6.定义main方法,在main方法中完成对上面方法的测试:
* 其中:
* 6.1 创建Sort对象sort,并给sort对象属性赋值,其中sname为"看电影",parent为"支出",sdesc为:"看《大鱼海棠》电影",
* 传递sort调用添加方法;
* 6.2 更新sort的sid为3,传递sort调用更新方法
* 6.3 调用删除方法,删除数据表sort中sid为8的记录。
* 6.4 调用查询方法,查询出所有parent为“支出”的sname值并在控制台打印输出。
*/
public class Sort {
private int id;
private String sname;
private String parent;
private String sdesc;
// 可以将 获取连接 声明成常量
//private static Connection conn = JDBCUtils.getConnection();
static QueryRunner qr = new QueryRunner();
// 定义方法: 将sort对象的所有属性添加到数据库表sort中
public void addSort(Sort sort) {
// 创建QueryRunner对象
QueryRunner qr = new QueryRunner();
String sql = "INSERT INTO sort(sname, parent , sdesc) VALUES (?,?,?)";
Object[] params = {sort.getSname(), sort.getParent(), sort.getSdesc()};
try {
Connection conn = JDBCUtils.getConnection();
int i = qr.update(conn,sql,params);
// List<Object[]> list = qr.query(conn,sql,new ArrayListHandler(), params);
// for (Object[] objects : list) {
// System.out.println(Arrays.toString(objects));
// }
System.out.println(i);
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 定义方法: 根据sort对象的sid值修改数据表sort中对应的记录
public void editSort(Sort sort) throws SQLException{
// 创建QueryRunner对象
QueryRunner qr = new QueryRunner();
// 获取连接
Connection conn = JDBCUtils.getConnection();
// sql语句
String sql = "UPDATE sort SET id = ?";
// 传参数 3 给 sid
qr.update(conn, sql, 8);
conn.close();
}
// 定义方法: 根据sid删除数据表sort中所对应的记录。
public void deleteSort(int sid) throws SQLException{
QueryRunner qr = new QueryRunner();
Connection conn = JDBCUtils.getConnection();
String sql = "DELETE FROM sort WHERE id = "+ sid;
qr.update(conn, sql);
System.out.println("删除成功!");
// TODO 每次必须关闭吗?
conn.close();
}
// 定义查找方法,根据 指定的parent查找数据库表中对应的所有sname值。
public List selectSnameByParent(String parent) throws Exception {
QueryRunner qr = new QueryRunner();
Connection conn = JDBCUtils.getConnection();
// 注: 此处的parent写法,要有单引号
String sql = "SELECT sname FROM sort WHERE parent ='"+parent+"'";
List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());
conn.close();
return list;
}
@Override
public String toString() {
return "Sort [id=" + id + ", sname=" + sname + ", parent=" + parent + ", sdesc=" + sdesc + "]";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getParent() {
return parent;
}
public void setParent(String parent) {
this.parent = parent;
}
public String getSdesc() {
return sdesc;
}
public void setSdesc(String sdesc) {
this.sdesc = sdesc;
}
}
测试类:
public class PricticeUnitTest {
public static void main(String[] args) throws Exception {
Sort sort = new Sort();
sort.setSname("看电影");
sort.setParent("支出");
sort.setSdesc("看《大鱼海棠》电影");
Sort sort2 = new Sort();
sort2.setSname("买东西");
sort2.setParent("支出");
sort2.setSdesc("买衣服");
// 6.1
sort.addSort(sort);
sort2.addSort(sort2);
// 6.2
// sort.editSort(sort);
// 6.3
// sort.deleteSort(8);
// 6.4
List<Object[]> list = sort.selectSnameByParent("支出");
for (Object[] objects : list) {
System.out.print(Arrays.toString(objects) + " ");
}
}
|
|