• JDBC_apache的DBUtils核心代码


    //domain层javaBean

    package cn.code.dbUtils;
    
    public class Stu {
        private String number;
        private String name;
        private int age;
        private String gender;
        public Stu() {
            super();
            // TODO Auto-generated constructor stub
        }
        public Stu(String number, String name, int age, String agender) {
            super();
            this.number = number;
            this.name = name;
            this.age = age;
            this.gender = agender;
        }
        public String getNumber() {
            return number;
        }
        public void setNumber(String number) {
            this.number = number;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String agender) {
            this.gender = agender;
        }
        @Override
        public String toString() {
            return "Stu [number=" + number + ", name=" + name + ", age=" + age
                    + ", gender=" + gender + "]";
        }
    }

    //工具类DBUtils

    package cn.code.dbUtils;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    
    public class DBUtilsDemo {
        DataSource datasource;
        
        public DBUtilsDemo(DataSource datasource) {
            super();
            this.datasource = datasource;
        }
        public DBUtilsDemo() {
            super();
            // TODO Auto-generated constructor stub
        }
        public int update(String sql,Object...params){
            Connection con=null;
            PreparedStatement ps=null;
            try{
                //得到链接
                con= datasource.getConnection();
                //得到执行sql语句对象
                ps = con.prepareStatement(sql);
                //给sql语句传参赋值
                initparams(ps,params);
                //返回执行语句影响行数
                return ps.executeUpdate();
            }catch(Exception e){
                throw new RuntimeException(e);
            }finally{
                try{
                    if(ps!=null)ps.close();
                    if(con!=null)con.close();
                }catch(Exception e){
                    throw new RuntimeException(e);
                }
                    
            }
        }
        private void initparams(PreparedStatement ps, Object[] params) throws SQLException {
            for(int x=0;x<params.length;x++){
                ps.setObject(x+1, params[x]);
            }
            
        }
        public <T> T query(String sql,RsHandler<T> rh,Object...params){
            Connection con=null;
            PreparedStatement ps=null;
            ResultSet rs = null;
            try{
                //获取连接
                con= datasource.getConnection();
                //获取执行语句对象
                ps= con.prepareStatement(sql);
                //传递参数
                initparams(ps, params);
                //执行sql获取结果集
                rs = ps.executeQuery();
                //调用接口方法handler()将结果集映射成对象返回
                return rh.handler(rs);
            }catch(Exception e){
                throw new RuntimeException(e);
            }finally{
                try{
                    if(ps!=null)ps.close();
                    if(con!=null)con.close();
                }catch(Exception e){
                    throw new RuntimeException(e);
                }
            }
        }
    
    }

    //接口

    package cn.code.dbUtils;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    
    public interface RsHandler<T> {
        public T handler(ResultSet rs)throws SQLException;
    }

    //测试类

    package cn.code.dbUtils;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.junit.Test;
    
    import cn.code.jdbc.JDBCUtils2;
    
    public class Demo {
        @Test
        public void test(){
            Stu s = find("0001");
            System.out.println(s);
            //addStu();
        }
        public void addStu(){
            //创建对象给出连接池
            DBUtilsDemo dd = new DBUtilsDemo(JDBCUtils2.getDataSource());
            //给出sql模板
            String sql ="insert into stu values(?,?,?,?)";
            //给出参数
            Object[]params={"0001","zhouxingchi",55,"boy"};
            //执行增删改
            dd.update(sql, params);
        }
        public Stu find(String number){
            DBUtilsDemo dd = new DBUtilsDemo(JDBCUtils2.getDataSource());
            String sql ="select * from stu where number=?";
            Object[]params={number};
            //实现RsHandler接口,内部类
            RsHandler<Stu> rh = new RsHandler<Stu> (){
    
                @Override
                public Stu handler(ResultSet rs) throws SQLException {
                    if(!rs.next())return null;
                    Stu stu = new Stu();
                    stu.setNumber(rs.getString("number"));
                    stu.setName(rs.getString("name"));
                    stu.setAge(rs.getInt("age"));
                    stu.setGender(rs.getString("gender"));
                    return stu;
                }
                
            };
            return (Stu)dd.query(sql, rh, params);
        }
    }
  • 相关阅读:
    c# HexStringtoByte十六进制字符串转字节与modusCRC校验
    安卓app_sl4_4星级评分条示范代码
    安卓app_sl3_28同意显示开始按钮示范
    安卓app_sl3_27通过ImageView显示带边边框的图片
    关于命令RGZPFM
    (转)经典中的经典
    Shell 截取文件名和后缀
    漫话:如何给女朋友解释什么是CDN?
    使用Shell遍历目录及其子目录中的所有文件
    Linux tr命令使用方法
  • 原文地址:https://www.cnblogs.com/wangyinxu/p/7428293.html
Copyright © 2020-2023  润新知