JDBC(五)——ORM原理

ORM 基本思想

ORM(Object Relationship Mapping,對象關係映射)的基本思想:

  • 表結構跟類對應;表中字段和累的屬性對應;表中記錄和對象對應;
  • 讓javabean的屬性名和類型儘量和數據庫保持一致
  • 一條記錄對應一個對象。將這些查詢到的對象放到容器中(List,Set,Map)

將表中的一條記錄封裝到Object數組中

/**
 * 測試使用object[]存儲對象
 */
class Demo1{
    public Demo1(){
        Connection conn = JDBCUtil.getMysqlConn();
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement("select empName,salary,age from emp where id = ?");
            ps.setObject(1,1);
            rs = ps.executeQuery();
            //三個屬性用三行,封裝一條記錄
            Object[] obj = new Object[3];
            //多條記錄用容器
            //List<Object[]> list = new ArrayList<Object[]>();
            while(rs.next()){
                //System.out.println(rs.getString("empName") + "--" + rs.getDouble(2));
                obj[0] = rs.getObject(1);
                obj[1] = rs.getObject(2);
                obj[2] = rs.getObject(3);

                //存入容器
                //list.add(obj);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.close(rs,ps,conn);
        }
    }
}

將表中的一條記錄封裝到map中

/**
 * 使用map存一條記錄
 */
class Demo2{
    public Demo2(){
        Connection conn = JDBCUtil.getMysqlConn();
        PreparedStatement ps = null;
        ResultSet rs = null;
        Map<String,Object> map = new HashMap<String,Object>();
        try {
            ps = conn.prepareStatement("select empName,salary,age from emp where id = ?");
            ps.setObject(1,1);
            rs = ps.executeQuery();
            while(rs.next()){
                map.put("empName",rs.getObject(1));
                map.put("salary",rs.getObject(2));
                map.put("age",rs.getObject(3));
                for(String key : map.keySet()){
                    System.out.println(key + "--" + map.get(key));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.close(rs,ps,conn);
        }
    }
}

將表中的一條記錄封裝到javabean對象中

/**
 * 使用javabean存一條記錄
 */
class Demo3{
    public Demo3(){
        Connection conn = JDBCUtil.getMysqlConn();
        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()){
                emp = new Emp(rs.getString(1),rs.getDouble(2),rs.getInt(3));
            }
            System.out.println(emp.getEmpname() + "--" + emp.getSalary() + "--" + emp.getAge());
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.close(rs,ps,conn);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章