博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多表操作
阅读量:2396 次
发布时间:2019-05-10

本文共 3664 字,大约阅读时间需要 12 分钟。

多表操作
  a)一对多或多对一
    表结构只有单向关联,类具有双向关联
    项目中,没有必要将所有的内容全部取出来,根据用户需求来有条件加载对应的值,加延迟加载  
  b)多对多

    以空间换时间,允许创建非标准的表

一对多:

package cn.itcast.web.jdbc.dao;import java.util.ArrayList;import java.util.List;import cn.itcast.web.jdbc.domain.Department;import cn.itcast.web.jdbc.domain.Employee;public class One2ManyTest {	public static void main(String[] args) throws Exception {		Department d = new Department();		d.setName("软件部");				Employee e1 = new Employee();		e1.setName("小王");		Employee e2 = new Employee();		e2.setName("小何");				List
employeeList = new ArrayList
(); employeeList.add(e1); employeeList.add(e2); d.setEmployeeList(employeeList); e1.setDepartment(d); e2.setDepartment(d); //保存部门记录时,同时保存对应的员工记录 Dao dao = new Dao(); dao.save(d); }}
多对多:

package cn.itcast.web.jdbc.dao;import java.util.ArrayList;import java.util.List;import cn.itcast.web.jdbc.domain.Student;import cn.itcast.web.jdbc.domain.Teacher;public class Many2ManyTest {	public static void main(String[] args) throws Exception {		Teacher t1 = new Teacher();		t1.setName("赵");		Teacher t2 = new Teacher();		t2.setName("蔡");				Student s1 = new Student();		s1.setName("小王");				Student s2 = new Student();		s2.setName("小何");				List
teacherList = new ArrayList
(); teacherList.add(t1); teacherList.add(t2); List
studentList = new ArrayList
(); studentList.add(s1); studentList.add(s2); t1.setStudentList(studentList); t2.setStudentList(studentList); s1.setTeacherList(teacherList); s2.setTeacherList(teacherList); Dao dao = new Dao(); dao.save(t1); }}
DAO:

package cn.itcast.web.jdbc.dao;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.ArrayHandler;import cn.itcast.web.jdbc.domain.Department;import cn.itcast.web.jdbc.domain.Employee;import cn.itcast.web.jdbc.domain.Student;import cn.itcast.web.jdbc.domain.Teacher;import cn.itcast.web.jdbc.util.JdbcUtil;public class Dao {	public void save(Department d) throws SQLException {		if(d==null){			throw new SQLException();		}		QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());				//NO1:向department表中插入一条记录		String sql = "insert into department(name) values(?)";		runner.update(sql,d.getName());				//NO2:取得插入department表中的主键		sql = "select id from department where name = ?";		Object[] array = (Object[]) runner.query(sql,d.getName(),new ArrayHandler());		int did = (Integer) array[0];				//NO3:向employee表中插入N条记录		sql = "insert into employee(name,did) values(?,?)";		for(Employee e : d.getEmployeeList()){			runner.update(sql,new Object[]{e.getName(),did});		}	}	public void save(Teacher t) throws SQLException {		if(t==null){			throw new SQLException();		}		QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());				//NO1:向teacher表中插入一条记录		String sql = "insert into teacher(name) values(?)";		runner.update(sql,t.getName());				//NO2:取得teacher表中插入记录的主键		sql = "select id from teacher where name = ?";		Object[] array = (Object[]) runner.query(sql,t.getName(),new ArrayHandler());		int tid = (Integer) array[0];				//NO3:向student表中插入N条记录		sql = "insert into student(name) values(?)";		for(Student s : t.getStudentList()){			runner.update(sql,s.getName());						//NO4:取得student表中插入记录的主键			String temp1 = "select id from student where name = ?";			array = (Object[]) runner.query(temp1,s.getName(),new ArrayHandler());			int sid = (Integer)array[0];						//NO5:向middle表中插入N条记录			String temp2 = "insert into middle(tid,sid) values(?,?)";			runner.update(temp2,new Object[]{tid,sid});					}			}}

转载于:https://my.oschina.net/u/2356176/blog/467495

你可能感兴趣的文章
oracle数据库
查看>>
oracle中间的数据类型
查看>>
论文划分
查看>>
vscode利用cmake调试
查看>>
zcash挖矿
查看>>
zcash挖矿指南
查看>>
区块链术语解释
查看>>
./configure,make,make install的作用
查看>>
学术论文录用结果通知(Notification)
查看>>
Theorem等数学化的论述
查看>>
PKI和X509证书
查看>>
使用HttpClient爬取国内疫情数据
查看>>
引用传递和值传递有什么区别
查看>>
C++从入门到放肆!
查看>>
C++是什么?怎么学?学完了能得到什么?
查看>>
初学C语言没有项目练手怎么行,这17个小项目收下不谢
查看>>
学好C语言,你只需要这几句口诀!
查看>>
选择大于努力!0基础学好C语言编程,首先要掌握的是什么?
查看>>
C语言和其他语言的不得不说的差别!
查看>>
夫妻俩在互联网公司工作,年收入曝光,网友:这么高!
查看>>