ORM基本思想
ORM(Object Relationship Mapping)的基本思想
表结构跟类结构对应;表中字段和类的属性对应;表中的记录和对象对应;
让javabean的属性名和类型尽量和数据库保持一致!
一条记录对应一个对象。将这些查询到的对象放到容器中(List,Set,Map)
将表中的一条记录封装到Objec数组中
使用Object[]来封装一条记录
使用List<Object[]>存储多条记录
Connection conn = JDBCUtil.getMysqlConn();
PreparedStatement ps = null;
ResultSet rs = null;
List<Object[]> list= new ArrayList<Object[]>();
try {
ps = conn.prepareStatement(“select empname,salary,age from emp where id>?”);
ps.setObject(1, 1);
rs = ps.executeQuery();
while(rs.next()){
Object[] objs= new Object[3]; //一个Object数组封装了一条记录的信息!
// System.out.println(rs.getString(1)+"–"+rs.getDouble(2)+"–"+rs.getInt(3));
objs[0]= rs.getString(1);
objs[1] = rs.getObject(2);//getDouble(2)
objs[2] = rs.getObject(3);
list.add(objs);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
for(Object[] objs:list){
System.out.println(""+objs[0]+objs[1]+objs[2]);
}
将表中的一条记录封装到map中
使用Map来封装一条记录
使用List<Map>,Map<Map>存储多条记录
public static void test01(){
Connection conn = JDBCUtil.getMysqlConn();
PreparedStatement ps = null;
ResultSet rs = null;
Map<String,Object> row = new HashMap<String, Object>();
//使用一个Map封装一条记录
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));
row.put(“empname”, rs.getObject(1));
row.put(“salary”, rs.getObject(2));
row.put(“age”, rs.getObject(3));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
//遍历Map,就是遍历这一行的多列的信息
for(String key:row.keySet()){//Set<key> keySet
System.out.print(key+"–"+row.get(key)+"\t");
}
}
使用List<Map>存储多条记录
public static void test02(){
Connection conn = JDBCUtil.getMysqlConn();
PreparedStatement ps = null;
ResultSet rs = null;
List<Map<String,Object>> list= new ArrayList<Map<String,Object>>();
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));
Map<String,Object> row = new HashMap<String, Object>();
//使用一个Map封装一条记录
row.put(“empname”, rs.getObject(1));
row.put(“salary”, rs.getObject(2));
row.put(“age”, rs.getObject(3));
list.add(row);//List
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
//遍历Map,就是遍历这一行的多列的信息
for(Map<String,Object> row:list){
for(String key:row.keySet()){
System.out.print(key+"–"+row.get(key)+"\t");
}
System.out.println();
}
}
使用Map<Map>存储多条记录
public static void test03(){
Connection conn = JDBCUtil.getMysqlConn();
PreparedStatement ps = null;
ResultSet rs = null;
Map<String,Map<String,Object>> maps = new
HashMap<String,Map<String,Object>>();
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));
Map<String,Object> row = new HashMap<String, Object>();
//使用一个Map封装一条记录
row.put(“empname”, rs.getObject(1));
row.put(“salary”, rs.getObject(2));
row.put(“age”, rs.getObject(3));
maps.put(rs.getString(1), row);//Map
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
//遍历Map,就是遍历这一行的多列的信息
for(String empname:maps.keySet()){
Map<String,Object> row = maps.get(empname);
for(String key:row.keySet()){
System.out.print(key+"–"+row.get(key)+"\t");
}
System.out.println();
}
}
将表中的一条记录封装到javabean对象中
使用Javabean对象来封装一条记录
public static void test01(){
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()){
// System.out.println(rs.getString(1)+"–"+rs.getDouble(2)+"–"+rs.getInt(3));
emp = new Emp(rs.getString(1),rs.getDouble(2),rs.getInt(3));//javabean
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs, ps, conn);
}
System.out.println(emp.getEmpname()+"-"+emp.getSalary()+"-"+emp.getAge());
}
使用List<Javabean>存储多条记录
public static void test02(){
Connection conn = JDBCUtil.getMysqlConn();
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));//JDBC方法
list.add(emp);//List
}
} 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());//javabeanset/get方法
}
}
SORM: