hibernate多对一关系,显示、修改、删除、查询、下拉框查询

本文详细介绍了hibernate中多对一关系的配置,包括如何处理外键约束、pojo类的调整以及hbm.xml的映射设置。接着讲解了带有下拉列表的修改操作,如何在显示和修改页面间传递数据,以及在控制器、接口和DAO层实现查询方法。此外,还阐述了多对一关系的删除逻辑,强调了删除一的一方需先删除多的一方。最后,讨论了根据教师名称的模糊查询和下拉框选择查询,涉及ajax的使用和DAO层的查询方法调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1、配置多对一

 教师表中的zc、zjz对应的是字典表中的id。

 

所以外键要放在教师表中,关联外键约束

要关联的主键之间的类型要一致,如教师表中的:zjz、zc,字典表中的id应是一个类型的,否则就会报错,zjz,zc里只能放字典表中id字段里的值,更改类型。zjz、zc要做关联用

pojo类中的Teacher.java中的类型也要做出更改,并修改他的get、set方法

 修改好后多对一的准备工作也就完成了

很多个老师对应一个职称,一个专兼职(多对一)在pojo下:

    因为是多对一所以需要添加这两个属性
    //多对一 ---->Teacher.hbm.xml  并给这两添加get、set方法
    private Dict zcDict;//职称
    private Dict zjzDict;

添加完之后需要在hbm.xml中配置他两的映射方法

//因为zcDict的类型是Dict所以需要一个class   
//column是用来指定外键的id值的 也就是Teacher中用来做外键的字段
//hibernate有懒加载的功能,只有的去调用了它才会去执行
//insert="false" update="false" 在查询表的瞬间就进行锁定不然会报错
<property name="zc" column="zc"></property>
<property name="zjz" column="zjz"></property> 
<many-to-one name="zcDict" class="com.hxci.pojo.Dict" column="zc" insert="false" update="false"></many-to-one>
<many-to-one name="zjzDict" class="com.hxci.pojo.Dict" column="zjz" insert="false" update="false"></many-to-one>

修改显示页面中职称,和专兼职改为新定义的两个属性

<td>'+v.zcDict.value+'</td> <td>'+v.zjzDict.value+'</td>

2、带多对一关系、下拉列表的修改

 我们做的修改和显示不是同一页面的,在点击修改的时候跳转到添加的页面,把添加页面的标题改为修改页面,并要求显示默认值。

我们可以通过传递id的值找到要修改信息, 需要传递一个id到添加页面

//在显示页面添加跳转修改的链接
<a href="teacherAdd.html?'+v.id+'">修改</a>   // 需要传递一个id到添加页面,

到添加页面中

$(function(){
	//通过判断当前的请求地址中是否有id
	var id =(window.location.href).split("?")[1]   
	//alert(id)
	if(id != null){
		$.ajax({	//通过一个ajax 向后台传递i,获取一条数据,并且显示在对应的位置上
		       type: "POST",
		       url: "/ssh_sign0506/tea!queryOne",     
                //不想定义新的变量来进行查询直接使用TeacherController中的 tea
		       data: {"tea.id":id}, //-->String index =null;
		       dataType:"json",
		       async: false,
		       success: function (res) {//res json对象
		    	   
		       },
		     });	
	}

在TeacherController中写查询一条的方法

public class TeacherController {

	TeacherService tservice =new TeacherServiceImpl();
	
	 String flag = "0";
	 List<Teacher> list = null;
	 Teacher tea = new Teacher();   //因为之前起到查询全部的作用有get、set方法,所以这里不需要进行创建

	 public String queryOne(){
		 tea = 	tservice.queryOne(tea);
		return "queryOne";//result标签
	 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值