纵有疾风起
人生不言弃

ORM的使用

ORM(Object Relationship Mapping)的基本思想
表结构跟类对应;
表中字段和类的属性对应;
表中记录和对象对应;

让javabean的属性名和类型尽量和数据库保持一致!
一条记录对应一个对象。将这些查询到的对象放到容器中(List,Set,Map)

将表中的一条记录封装到Object数组中
将表中的一条记录封装到map中
将表中的一条记录封装到javabean对象中**

ORM的使用插图
示例1:将表中的一条记录封装到Object数组中

package com.lgd.orm;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/** * 使用Object数组来封装一条记录 * @author liguodong * */
public class Demo01 {
    public static void main(String[] args) {
        Connection connection = JDBCUtil2.getMysqlConn();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        Object[] objects = null;
        try {
            preparedStatement = connection.prepareStatement("select enpname,salary,age from emp where id=?");
            //preparedStatement.setObject(1, 2);
            preparedStatement.setInt(1, 2);
            resultSet = preparedStatement.executeQuery();
            objects = new Object[3];//一个Object数组封装了一条记录的信息!
            while(resultSet.next())
            {
                //System.out.println(resultSet.getString(1));
                objects[0] = resultSet.getObject(1);
                objects[1] = resultSet.getObject(2);
                objects[2] = resultSet.getObject(3);

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JDBCUtil2.close(resultSet,preparedStatement,connection);
        }

        System.out.println(objects[0]+"--"+objects[1]+"--"+objects[2]);     
    }
}
package com.lgd.orm;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/** * 使用List<Object[]>存储多条记录 * @author liguodong * */

public class Demo02 {
    public static void main(String[] args) {
        Connection connection = JDBCUtil2.getMysqlConn();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        //存放多条记录
        List<Object[]> list = new ArrayList<Object[]>();

        try {
            preparedStatement = connection.prepareStatement("select enpname,salary,age from emp where id>=?");
            //preparedStatement.setObject(1, 2);
            preparedStatement.setInt(1, 2);
            resultSet = preparedStatement.executeQuery();

            while(resultSet.next())
            {
                Object[] objects = new Object[3];//一个Object数组封装了一条记录的信息!
                //System.out.println(resultSet.getString(1));
                objects[0] = resultSet.getObject(1);
                objects[1] = resultSet.getObject(2);
                objects[2] = resultSet.getObject(3);
                list.add(objects);

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JDBCUtil2.close(resultSet,preparedStatement,connection);
        }   

        for (Object[] objects : list) {
            System.out.println(objects[0]+"--"+objects[1]+"--"+objects[2]);
        }
    }
}

运行结果:
王二狗–30000.0–4
李大钊–35000.0–5

示例2:将表中的一条记录封装到map中

package com.lgd.orm;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;


/** * 使用map来封装一条记录 * @author liguodong * */
public class Demo03 {
    public static void main(String[] args) {
        Connection connection = JDBCUtil2.getMysqlConn();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        Map<String,Object> map = new HashMap<String, Object>();//使用一个map封装了一条记录的信息!

        try {
            preparedStatement = connection.prepareStatement("select enpname,salary,age from emp where id=?");
            //preparedStatement.setObject(1, 2);
            preparedStatement.setInt(1, 2);
            resultSet = preparedStatement.executeQuery();

            while(resultSet.next())
            {
                //System.out.println(resultSet.getString(1));
                map.put("empname", resultSet.getObject(1));
                map.put("salary", resultSet.getObject(2));
                map.put("age", resultSet.getObject(3));

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JDBCUtil2.close(resultSet,preparedStatement,connection);
        }

        //遍历Map,就是遍历这一行的多列的信息
        for (String key : map.keySet()) {
            System.out.println(key+"--"+map.get(key)+"\t");
        }
    }
}

运行结果:
age–4
empname–王二狗
salary–30000.0

package com.lgd.orm;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/** * 使用List<Map<String,Object>>来封装多条记录 * @author liguodong * */
public class Demo04 {
    public static void main(String[] args) {
        Connection connection = JDBCUtil2.getMysqlConn();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

        try {
            preparedStatement = connection.prepareStatement("select enpname,salary,age from emp where id>=?");
            //preparedStatement.setObject(1, 2);
            preparedStatement.setInt(1, 2);
            resultSet = preparedStatement.executeQuery();


            while(resultSet.next())
            {
                Map<String,Object> map = new HashMap<String, Object>();//使用一个map封装了一条记录的信息!
                //System.out.println(resultSet.getString(1));
                map.put("empname", resultSet.getObject(1));
                map.put("salary", resultSet.getObject(2));
                map.put("age", resultSet.getObject(3));
                list.add(map);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JDBCUtil2.close(resultSet,preparedStatement,connection);
        }

        //遍历List<Map<String,Object>>
        for (Map<String, Object> map : list) {
            for (String key : map.keySet()) {
                System.out.print(key+":"+map.get(key)+"\t");
            }   
            System.out.println();
        }
    }
}

运行结果:
age:4 empname:王二狗 salary:30000.0
age:5 empname:李大钊 salary:35000.0

package com.lgd.orm;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

/** * 使用Map<Integer,Map<String,Object>>来封装多条记录 * @author liguodong * */
public class Demo05 {
    public static void main(String[] args) {
        Connection connection = JDBCUtil2.getMysqlConn();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        Map<Integer,Map<String,Object>> maps = new HashMap<Integer,Map<String,Object>>();

        try {
            preparedStatement = connection.prepareStatement("select id,enpname,salary,age from emp where id>=?");
            //preparedStatement.setObject(1, 2);
            preparedStatement.setInt(1, 2);
            resultSet = preparedStatement.executeQuery();


            while(resultSet.next())
            {
                Map<String,Object> map = new HashMap<String, Object>();//使用一个map封装了一条记录的信息!
                //System.out.println(resultSet.getString(1));
                map.put("empname", resultSet.getObject(2));
                map.put("salary", resultSet.getObject(3));
                map.put("age", resultSet.getObject(4));
                maps.put((Integer)resultSet.getObject(1),map);

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JDBCUtil2.close(resultSet,preparedStatement,connection);
        }

        //遍历Map<Integer,Map<String,Object>>
        for (Integer id : maps.keySet()) {
            for (String key : maps.get(id).keySet()) {
                System.out.print(key+":"+maps.get(id).get(key)+"\t");
            }   
            System.out.println();
        }
    }
}

运行结果:
age:4 empname:王二狗 salary:30000.0
age:5 empname:李大钊 salary:35000.0

示例3:将表中的一条记录封装到javabean对象中

package com.lgd.orm;

import java.sql.Date;

public class Emp { //表结构和类对应
    private Integer id;
    private String empname;
    private Integer age;
    private Double salary;
    private Date birthday;
    private Integer deptId;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getEmpname() {
        return empname;
    }
    public void setEmpname(String empname) {
        this.empname = empname;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public Integer getDeptId() {
        return deptId;
    }
    public void setDeptId(Integer deptId) {
        this.deptId = deptId;
    }
    public Emp(Integer id, String empname, Integer age, Double salary,
            Date birthday, Integer deptId) {
        super();
        this.id = id;
        this.empname = empname;
        this.age = age;
        this.salary = salary;
        this.birthday = birthday;
        this.deptId = deptId;
    }
    public Emp(String empname, Double salary, Integer age) {
        super();
        this.empname = empname;
        this.age = age;
        this.salary = salary;
    }
    public Emp() {
    }
}
package com.lgd.orm;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;


/** * 使用Javabean来封装一条记录 * @author liguodong * */
public class Demo06 {
    public static void main(String[] args) {
        Connection connection = JDBCUtil2.getMysqlConn();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        Emp emp = null;
        try {
            preparedStatement = connection.prepareStatement("select enpname,salary,age from emp where id=?");
            //preparedStatement.setObject(1, 2);
            preparedStatement.setInt(1, 2);
            resultSet = preparedStatement.executeQuery();

            while(resultSet.next())
            {
                //System.out.println(resultSet.getString(1));
                emp = new Emp(resultSet.getString(1), resultSet.getDouble(2), resultSet.getInt(3));             
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JDBCUtil2.close(resultSet,preparedStatement,connection);
        }
        System.out.println(emp.getEmpname()+"--"+emp.getSalary()+"--"+emp.getAge());            
    }
}

运行结果:
王二狗–30000.0–4

package com.lgd.orm;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/** * 使用List<Emp>来封装多条记录 * @author liguodong * */
public class Demo07 {
    public static void main(String[] args) {
        Connection connection = JDBCUtil2.getMysqlConn();
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        List<Emp> list = new ArrayList<Emp>();

        try {
            preparedStatement = connection.prepareStatement("select enpname,salary,age from emp where id>=?");
            //preparedStatement.setObject(1, 2);
            preparedStatement.setInt(1, 2);
            resultSet = preparedStatement.executeQuery();

            while(resultSet.next())
            {
                //System.out.println(resultSet.getString(1));
                Emp emp = new Emp(resultSet.getString(1), resultSet.getDouble(2), resultSet.getInt(3));             
                list.add(emp);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JDBCUtil2.close(resultSet,preparedStatement,connection);
        }
        for (Emp emp : list) {
            System.out.println(emp.getEmpname()+"--"+emp.getSalary()+"--"+emp.getAge());
        }

    }
}

运行结果:
王二狗–30000.0–4
李大钊–35000.0–5

原文链接:https://blog.csdn.net/scgaliguodong123_/article/details/45509569

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

未经允许不得转载:起风网 » ORM的使用
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录