zoukankan      html  css  js  c++  java
  • 31&lt记录

    31:

    讲一个项目的亮点?应该答小论文

    多线程如何实现? 3种方法

    线程池中最大线程数和核心线程数的区别?

    死锁是怎么产生的?如何在代码上避免死锁产生。

    lt:

    字符串批量删除的算法题(就是笔试题)

    int indexOf(String str, int fromIndex)
    返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始

    public static int countStr(String str1,String str2){
            int index=0;
            int count=0;
            while((index=str1.indexOf(str2,index))!=-1){
                index = index+str2.length();
                count++;
            }
            return count;
        }

    indexOf底层是什么?让你写你怎么实现?

    不用框架,JDBC时得到结果集后,ORM操作是怎么把取到的数据放到javaBean里面的。

    其实很简单,就是用rs.getObject方法得到的行元素直接当做new javaBean对象构造方法的参数就是了。


    ORM(Object Relationship Mapping)的基本思想

    表结构跟类对应;表中字段和类的属性对应;表中记录和对象对应;

    javabean的属性名和类型尽量和数据库保持一致!

    一条记录对应一个对象。将这些查询到的对象放到容器中(List,Set,Map)

    • 将表中的一条记录封装到Object数组中

    将表中的一条记录封装到map

    将表中一条记录封装到javabean对象中

    DEMO1

     * 使用Object[]来封装一条记录

     * 使用List<Object[]>存储多条记录

    ResultSet rs ;
    rs = ps.executeQuery();//执行查询
    while(rs.next()){
    System.out.println(rs.getString(1)+"--"+rs.getDouble(2)+"--"+rs.getInt(3));
    //一个Object数组封装了一条记录的信息!这样即使连接中断也能从object数组获得信息
    Object[] objs= new Object[3];//一维数组长度为3个元素
    //是3个元素分别放的是姓名,薪水和年龄 objs[0]= rs.getString(1); objs[1] = rs.getObject(2); objs[2] = rs.getObject(3); list.add(objs);//这样一个循环插入一个一维obj数组 }

    刚才是用Objiect数组封装一条记录,由于一条记录装了3个元素,所以是Object[3]

    接下来我们用Map封装一条记录 那是id为键,其他为值吗?那是有很多值了??

    呃。。。他这一条是map自己put3个元素不一样的key用rs.getObject方法取3个元素各自取得的。。。

     * 使用Map来封装一条记录

     * 使用List<Map>,Map<Map>存储多条记录

     lt的问题题解在这儿。。。

    接下来采用将表中一条记录封装到javabean对象中(工作中用的比较多,但是会有ORM的框架帮着去做,比如hebnatemybatis帮着去做

    首先要针对表名去建立相应的对象、字段对应属性

    然后就和前面一样,用rs.getOblect得到了一行中的每个元素数据,直接当成参数传入构造方法参数

    Emp.java Dept.java 写上setget和构造器(javabean实体类先建好)

    新建demo03.java

    import java.sql.*;
    import java.util.*;
    /***
     * 使用Javabean对象来封装一条记录
     * 使用List<Javabean>存储多条记录
     * @author Administrator
     *
     */
    public class Demo03 {
        
        public static void test01(){
            Connection conn = JDBCUtil.getMysqlConnection();
            PreparedStatement ps = null;
            ResultSet rs = null;
            Emp emp = null;
            try {
                ps = conn.prepareStatement("select empname,salary,age from emp where id=?");
                ps.setObject(1, 1);
                rs = ps.executeQuery();
                while(rs.next()){
    //                System.out.println(rs.getString(1)+"--"+rs.getDouble(2)+"--"+rs.getInt(3));
                    emp = new Emp(rs.getString(1),rs.getDouble(2),rs.getInt(3));//构造器 new对象 前面是new obj数组 和new map
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                JDBCUtil.close(rs, ps, conn);
            }
            System.out.println(emp.getEmpname()+"-"+emp.getSalary()+"-"+emp.getAge());
        }
        
        public static void test02(){
            Connection conn = JDBCUtil.getMysqlConnection();
            PreparedStatement ps = null;
            ResultSet rs = null;
            List<Emp> list= new ArrayList<Emp>();
            try {
                ps = conn.prepareStatement("select empname,salary,age from emp where id>?");
                ps.setObject(1, 1);
                rs = ps.executeQuery();
                while(rs.next()){
                    Emp emp = new Emp(rs.getString(1),rs.getDouble(2),rs.getInt(3));
                    list.add(emp);//把前面的存住了不会被循环覆盖掉
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                JDBCUtil.close(rs, ps, conn);
            }
            
            //遍历List,就是遍历这一行的多列的信息
            for(Emp emp:list){
                System.out.println(emp.getEmpname()+"-"+emp.getSalary()+"-"+emp.getAge());
            }
        }
        
        public static void main(String[] args) {
            test02();    
        }
    }
    运行结果:
    马士兵-40000.0-13
    万欣-20000.0-14
    裴新-30000.0-15
  • 相关阅读:
    PHP常用代码大全
    使用PHP CURL的POST数据
    mysql_fetch_assoc() ,mysql_fetch_array() , mysql_fetch_row()的区别
    Memcached 搭建过程
    IOS中的UIScrollView
    IOS的自定义控件
    苹果API常用英语名词
    UIActivityIndicatorView
    UIButton
    UIControl事件
  • 原文地址:https://www.cnblogs.com/gezi1007/p/13911932.html
Copyright © 2011-2022 走看看