0
点赞
收藏
分享

微信扫一扫

ORM的使用

扬帆远航_df7c 2022-02-17 阅读 41


ORM(Object Relationship Mapping)的基本思想

表结构跟类对应;

表中字段和类的属性对应;

表中记录和对象对应;

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

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

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

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

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

ORM的使用_sql

示例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



举报

相关推荐

0 条评论