用dbutils组件实现对数据库的增删改查等操作
jopen
11年前
实例化查询接口
QueryRunner qr = new QueryRunner();//实例化查询接口
添加
/** 添加电影 */ public int insert(Movie movie) { Object[] params = {movie.getName(), movie.getType(), movie.getCountry(), movie.getYear(), movie.getMonth(), movie.getIntro(), movie.getPic()}; try { return qr.update(getConn(), "insert into t_movie(name,type,country,year,month,intro,pic)" + " values(?,?,?,?,?,?,?)", params); } catch (SQLException e) { e.printStackTrace(); } return 0; }
删除
/** 根据PK删除电影 */ public int delete(Integer id) { Object[] params = {id}; try { return qr.update(getConn(), "delete from t_movie where id=?", params); } catch (SQLException e) { e.printStackTrace(); } return 0; }
修改
/** 根据PK修改电影 */ public int update(Movie movie) { Object[] params = {movie.getName(), movie.getType(), movie.getCountry(), movie.getId()}; try { return qr.update(getConn(), "update t_movie set name=?,type=?,country=? where id=?", params); } catch (SQLException e) { e.printStackTrace(); } return 0; }
查询
/** 根据条件(默认一张表所有数据)返回多条记录 */ public List<Movie> list(String kw) { List<Movie> list = null; Object[] params = {};//代入的参数列表 String sqlWhere = ""; String sql = "select * from t_movie where 1=1 "; if(kw!=null && !kw.equals("")) { sqlWhere = " and name like '%"+kw+"%'"; } sql += sqlWhere; ResultSetHandler<List<Movie>> rsh = new BeanListHandler<Movie>(Movie.class);//把结果集转成BeanList try { list = qr.query(getConn(), sql, rsh, params); //调用查询接口的查询函数 } catch (SQLException e) { e.printStackTrace(); } return list; }
匹配
/** 根据PK显示单条电影信息 */ public Movie getOne(Integer id) { Movie movie = null; Object[] params = {id}; ResultSetHandler<Movie> rsh = new BeanHandler<Movie>(Movie.class);//把单条结果集封装成一个Bean实例 try { movie = qr.query(getConn(), "select * from t_movie where id=?", rsh, params); } catch (SQLException e) { e.printStackTrace(); } return movie; }
唯一性验证
/** 检测同名电影是否添加过 */ public Long validateMovieName(String name) { Map<String, Object> map = null; Object[] params = {name}; ResultSetHandler<Map<String, Object>> rsh = new MapHandler();//把单条结果集封装成一个Map try { map = qr.query(getConn(), "select count(1) nums from t_movie where name=?", rsh, params); } catch (SQLException e) { e.printStackTrace(); } return (Long)map.get("nums"); }
BaseDAO.java文件中
Connection conn;
/** 返回一个Connection */ public Connection getConn(){ try { Properties pro = new Properties(); try { Class.forName("com.mysql.jdbc.Driver").newInstance(); pro.load(BaseDAO.class.getResourceAsStream("/db.properties")); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("属性文件未找到"); } String u = pro.getProperty("user"); String password = pro.getProperty("password"); String url = pro.getProperty("url");//关于连接Oracle的两种方式:thin和oci conn = DriverManager.getConnection(url, u, password); } catch (SQLException e) { e.printStackTrace(); } return conn; }
MovieDAO.java
package com.app.dao; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.MapHandler; import com.app.domain.Movie; public class MovieDAO extends BaseDAO { QueryRunner qr = new QueryRunner();//实例化查询接口 /** 添加电影 */ public int insert(Movie movie) { Object[] params = {movie.getName(), movie.getType(), movie.getCountry(), movie.getYear(), movie.getMonth(), movie.getIntro(), movie.getPic()}; try { return qr.update(getConn(), "insert into t_movie(name,type,country,year,month,intro,pic)" + " values(?,?,?,?,?,?,?)", params); } catch (SQLException e) { e.printStackTrace(); } return 0; } /** 根据PK删除电影 */ public int delete(Integer id) { Object[] params = {id}; try { return qr.update(getConn(), "delete from t_movie where id=?", params); } catch (SQLException e) { e.printStackTrace(); } return 0; } /** 根据PK修改电影 */ public int update(Movie movie) { Object[] params = {movie.getName(), movie.getType(), movie.getCountry(), movie.getId()}; try { return qr.update(getConn(), "update t_movie set name=?,type=?,country=? where id=?", params); } catch (SQLException e) { e.printStackTrace(); } return 0; } /** 根据条件(默认一张表所有数据)返回多条记录 */ public List<Movie> list(String kw) { List<Movie> list = null; Object[] params = {};//代入的参数列表 String sqlWhere = ""; String sql = "select * from t_movie where 1=1 "; if(kw!=null && !kw.equals("")) { sqlWhere = " and name like '%"+kw+"%'"; } sql += sqlWhere; ResultSetHandler<List<Movie>> rsh = new BeanListHandler<Movie>(Movie.class);//把结果集转成BeanList try { list = qr.query(getConn(), sql, rsh, params); //调用查询接口的查询函数 } catch (SQLException e) { e.printStackTrace(); } return list; } /** 根据PK显示单条电影信息 */ public Movie getOne(Integer id) { Movie movie = null; Object[] params = {id}; ResultSetHandler<Movie> rsh = new BeanHandler<Movie>(Movie.class);//把单条结果集封装成一个Bean实例 try { movie = qr.query(getConn(), "select * from t_movie where id=?", rsh, params); } catch (SQLException e) { e.printStackTrace(); } return movie; } /** 检测同名电影是否添加过 */ public Long validateMovieName(String name) { Map<String, Object> map = null; Object[] params = {name}; ResultSetHandler<Map<String, Object>> rsh = new MapHandler();//把单条结果集封装成一个Map try { map = qr.query(getConn(), "select count(1) nums from t_movie where name=?", rsh, params); } catch (SQLException e) { e.printStackTrace(); } return (Long)map.get("nums"); } /*public static void main(String[] args) { MovieDAO movieDAO = new MovieDAO(); System.out.println(movieDAO.validateMovieName("蓝精灵")); }*/ }