JDBC2

jdbcUtils

1.四大参数的出现了硬编码

static String className;
    static String url;
    static String user;
    static String password;

     static  {
        try {
            Properties p = new Properties();
            p.load(new FileInputStream("jdbc.properties"));
            className = p.getProperty("className");
            url = p.getProperty("url");
            user = p.getProperty("user");
            password = p.getProperty("password");
            Class.forName(className);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() throws SQLException{
              Connection connection = DriverManager.getConnection(url,user,password);
              return connection;
    }

2.sql字符串拼接:不方便,sql有注入
通过prepareStatement防止sql注入

String sql="select * from user where username=? and password=?";
        PreparedStatement ps = con.prepareStatement(sql);
        for(int i=0;i<value.length;i++){
        ps.setObject(i+1,value[i]);
        }
        ResultSet rs = ps.executeQuery();

3.javabean的封装不方便
泛型+反射

注意:类中的数据名要和表中的完全相同

//得到单个对象
    if(!rs.next()){
            return null;
        }
        T obj = clazz.newInstance();
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            String name = field.getName();
            field.setAccessible(true);
            if(field.getType()==int.class){
            int value1=rs.getInt(name);
                field.set(obj, value1);
            }
            else if(field.getType()==String.class){
                String  value1=rs.getString(name);
                field.set(obj, value1);
            }
            else if(field.getType()==float.class){
                float   value1=rs.getFloat(name);
                field.set(obj, value1);
            }
            else{
                double  value1=rs.getDouble(name);
                field.set(obj, value1);
            }
            
        }
        return obj;
//得到对象的集合
    ArrayList<T> list = new ArrayList<T>();
        Connection con = getConnection();
        PreparedStatement ps = con.prepareStatement(sql);
        for (int i = 0; i < value.length; i++) {
            ps.setObject(i + 1, value[i]);
        }
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            T obj = getBean(clazz, rs);
            list.add(obj);
        }
        return list;
    }

查找单个数

  if(rs.next()){
            return rs.getObject(1);
        }
        return null;
            String sql="select count(*) from user";
        Number num = (Number)JdbcUtils.selectNum(sql);
        int i = num.intValue();
        System.out.println(i);

查询封装

        ArrayList list = new ArrayList();
        String sql = "update user set id=?";
        list.add(user.getId());
        if (user.getUsername() != null &&!"".equals(user.getUsername())) {
             sql=sql+",username=?";
             list.add(user.getUsername());
        }
        if (user.getPassword()!= null &&!"".equals(user.getPassword())) {
            sql=sql+",password=?";
            list.add(user.getPassword());
        }
        sql=sql+" where id="+user.getId();
        int i = JdbcUtils.update(sql, list.toArray());
        return i;
    }

增删改封装

        ArrayList list = new ArrayList();
        String sql = "select * from user where 1=1";
        if (user.getUsername() != null && !"".equals(user.getUsername())) {
            sql = sql + " and username like ?";
            list.add("%" + user.getUsername() + "%");
        }
        if (user.getPassword() != null && !"".equals(user.getPassword())) {
            sql = sql + " and password like ?";
            list.add("%" + user.getPassword() + "%");
        }
        System.out.println(sql);
        System.out.println(list);
        ArrayList<User> list2 = JdbcUtils.toList(User.class, sql,
                list.toArray());
        return list2;

配置文件

property是map与io流(FilleInputStream)的结合

Property p=new Property();//创建对象
p.load(new FileInputStream("文件名"));//读取文件对象
Object obj=p.getProperty(key)//传入key得到文件中对应的对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 4,072评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,050评论 18 399
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 6,358评论 0 4
  • 【一剪梅】北宋. 李清照 红藕香残玉簟秋,轻解罗裳,独上兰舟。 云中谁寄锦书来?雁字回时,月满西楼。 花自飘零水自...
    晨若阅读 398评论 5 4
  • 还在为吃不好,睡不好,身材不好发愁吗?赶紧订阅~联桥健康生活~,微信关注~联桥健康生活馆~,这里有各种方法,肯定有...
    联桥健康生活阅读 288评论 0 0

友情链接更多精彩内容