ibatis 实现一对多代码

ibatis实战之一对多关联(源代码) ibatis实战之一对多关联源代码 文章地址:http://blog.youkuaiyun.com/itmyhome1990/article/details/30050183 立即下载
package users.dto;

public class UserDealDTO {
	private String deal_id;
	private int quantity;
	public String getDeal_id() {
		return deal_id;
	}
	public void setDeal_id(String deal_id) {
		this.deal_id = deal_id;
	}
	public int getQuantity() {
		return quantity;
	}
	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}
	
	public String toString(){
		return "[deal_id = " + deal_id + ",Quantity = " + quantity + "]";
	}
}
package users.dto;

import java.util.List;

public class UserDTO {
	private String id;
	private String username;
	private String password;
	private List<UserDealDTO> userDeals;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public List<UserDealDTO> getUserDeals() {
		return userDeals;
	}
	public void setUserDeals(List<UserDealDTO> userDeals) {
		this.userDeals = userDeals;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}



package users.dto;


public class UserInfoDTO {
	private String username;
	private String password;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}



表结构  select id,username,password from user_struts  以及 select deal_id,quantity from user_struts_deal where id ,id为外键

xml配置

<!-- 实现一对多的方式  一 
	<resultMap class="userInfo" id="userInfoResult" groupBy="id"><!--此id名称是property对应的名称-->
		<result property="id" column="id"/>   
  		<result property="username" column="username"/>
  		<result property="password" column="password"/>
  		<result property="userDeals" resultMap="User.userDealResult"/>   
   </resultMap>
    这个地方的resultMap必须加User这个namespace前缀 
   
    <resultMap class="userDeal" id="userDealResult" groupBy="deal_id">  <!--此deal_id名称是property对应的名称-->
        <result property="deal_id" column="deal_id" />
        <result property="quantity" column="quantity" />
    </resultMap>  
  
   <select id="getUserDeals" parameterClass="int" resultMap="userInfoResult">
   		select t.id as id,t.username as username,d.deal_id as deal_id,d.quantity as quantity
   		 	from user_struts t
   		join user_struts_deal d on
   			t.id = d.id
   		where t.id = #value#
   </select>
-->
<!--一对多实现方式二 -->
	<resultMap class="userInfo" id="userInfoResult" >
		<result property="id" column="id"/>   
  		<result property="username" column="username"/>
  		<result property="password" column="password"/>
  		<result property="userDeals" column="id" select="userDealResult"/>  <!--此id名称是column对应的名称--> 
   </resultMap>
   
   <select id="getUserDeals" parameterClass="int" resultMap="userInfoResult">
   		select id,username,password from user_struts where id = #value#
   </select>
   
   <select id="userDealResult" parameterClass="int" resultClass="userDeal">
   		select deal_id,quantity from user_struts_deal where id = #value#
   </select>
biz-context.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
	<bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:TEST" />
        <property name="username" value="dbo" />
        <property name="password" value="oracle" />
    </bean>
    
	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">   
        <property name="dataSource">   
            <ref local="dataSource"/>   
        </property>   
        <property name="configLocation">   
            <value>/Test/springdemotest/sqlmapping-config.xml</value>   
        </property>
    </bean>
    
   <bean id="SpringContextUtil" 
       class="users.util.SpringContextUtil"/>

	<bean id="loginService" 
		class="users.login.service.Impl.LoginServiceImpl">
	</bean>
	
	<bean id="userDAO" 
		class="users.login.userDAO.Impl.UserDAOImpl">
	    <property name="dataSource">
			<ref local="dataSource" />
		</property>
		<property name="sqlMapClient">
			<ref bean="sqlMapClient" />
		</property>
	</bean>
	
    <bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref local="dataSource"/>
		</property>
	</bean>	
	
	<bean id="userDAOProxy"
	class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
	<property name="transactionManager">
		<ref bean="transactionManager" />
	</property>
	<property name="target">
		<ref local="userDAO" />
	</property>
	<property name="transactionAttributes">
		<props>
			<prop key="insert*">PROPAGATION_REQUIRED</prop>
			<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
		</props>
	</property>
	</bean>
	
    <bean id="LoginAction" class="users.login.action.LoginAction">    
    </bean>
    
</beans> 
	


两种实现一对多的配置方式

测试代码

public class SpringDemoTest {
	public static void main(String args[]) throws SQLException{
		//ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
		ApplicationContext ctx = new ClassPathXmlApplicationContext("Test/springdemotest/biz-context.xml");
		UserDAO dao = (UserDAO)ctx.getBean("userDAO");
		SqlMapClient sqlMapClient = (SqlMapClient) ctx.getBean("sqlMapClient");
		//UserDTO userDTO = dao.getUserDeal(1);
		UserDTO userDTO = (UserDTO) sqlMapClient.queryForObject("getUserDeals", 2);
		List<UserDealDTO> userDeals = userDTO.getUserDeals();
		System.out.println("userID = " + userDTO.getId() + ", password = " + userDTO.getPassword() + ", user = " + userDTO.getUsername());
		for(UserDealDTO deals:userDeals){
			System.out.println(deals);
		}
	}

}












        
ibatis一对一、多对一示例 利用ibatis实现一对一、多对一的示例代码。每种关系用两种方式实现,具体的讲解可看我的博客http://blog.youkuaiyun.com/duwenchao1986/article/details/8565386 立即下载

相关推荐

Decoder如何工作、Transformer如何训练、以及exposure bias问题

1、结合图文描述Decoder中各个模块是什么,以及是如何工作的。2、transformer是如何训练的。3、exposure bias问题造成的原因及解决方法

m0_59113542的博客 3345

ibatis实战之一对多关联

ibatis实战之一对多关联

hffygc的博客 313

EB tresos配置指南:CAN通信信号收发全流程解析

本文详细解析了使用EB tresos配置工具实现AUTOSAR架构下CAN通信信号收发功能的全流程。从环境准备、COM模块信号定义、PduR路由配置、CanIf硬件抽象到CAN驱动层设置,提供了清晰的步骤指南和关键配置要点,帮助开发者快速打通从应用层到物理层的数据链路,实现可靠的CAN通信。

weixin_29192141的博客 507

IBatis配置一对一、一对多两种实现方式

IBatis配置一对一、一对多两种实现方式有两张表:student(学生)、class(班级),一个学生只属于某一个班级,但某一个班下可以有多个学生。一对一方式一

Muspelheim的博客 5209

在Pycharm中配置Pyqt5工具(2023年新版教程)

在Pycharm中配置Pyqt5相关的三个工具:QtDesigner、PyUIC、PYRCC

网络技术和Python 2万+

步进电机驱动算法——梯形加减速算法

目录步进电机梯形加减速梯形加减速算法原理分析算法实现 步进电机梯形加减速 电机的控制方式一般分为开环控制与闭环控制两种控制方式,其中开环控制原理框图如下: 这种种控制方式的特点是:控制简单、实现容易、价格较低,这种开环控制方式,负载位置对控制电路没有反馈。 对于步进电机,控制脉冲的输入并不依赖于转子的位置,而是按一固定的规律发出控制脉冲,如果励磁变化太快,电机不能移动到新的位置,那么实际负载位置与理想位置就会产生一个偏差,就有可能出现失步或者过冲现象,所以需要使用加减速算法。 梯形加减速算法,S加减速算法等

aaa376070331的博客 3万+

ibatis一对多示例

1、在实际开发中,iBATIS框架已经很普遍的使用,然而我们常常遇到关联数据的情况,如User 对象拥有若干Address 对象,每个Address 对象描述了对应User 的一个联系地址,这种情况下,我们应该如何处理?通过单独的Statement操作固然可以实现(通过Statement 用于读取用户数据,再手工调用另外一个Statement 根据用户ID 返回对应的Address信息)。

qq_34721308的博客 610

Python爬虫实战:利用最新技术爬取抖音话题挑战视频

本文将详细介绍如何使用Python最新技术栈构建一个高效的抖音话题挑战视频爬虫。我们将从环境配置开始,逐步讲解请求模拟、数据解析、反反爬策略、数据存储等关键环节,并提供完整的代码实现。本文适合有一定Python基础的开发者学习高级网络爬虫技术。关键词:Python爬虫、抖音API、话题挑战、视频爬取、反反爬本文详细介绍了如何使用Python最新技术栈构建抖音话题挑战视频爬虫。我们从基础请求开始,逐步实现了数据解析、反反爬策略、数据存储等核心功能,并探讨了分布式和增量爬取等高级主题。更智能的反反爬策略。

2201_76125261的博客 1744

ibatis配置多表关联(一对一、一对多、多对多)

iBatis的多表关联。 ibatis的表关联,和数据库语句无关,是在程序中,把若干语句的结果关联到一起。这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便。 这里用表lock和key为例,一个lock可以配多个key。    CREATE TABLE lock( id int, lockName varchar ); CRE...

219

ZYNQ工业级串口方案:AXI UART 16550扩展RS-485实战(自动方向控制+Linux驱动)

可以轻松扩展出多路工业级串口。但常规方案需要手动控制收发方向(DE/RE引脚),存在实时性差、CPU占用高等痛点。本文从硬件逻辑设计到Linux驱动开发,完整实现了ZYNQ平台的RS-485工业通信方案。,解决了传统方案实时性差的痛点。所有代码均经过实际项目验证,可直接用于生产环境。:尝试将此设计扩展为多协议兼容接口(支持RS-422/RS-232切换)!等特性,依然是现场总线通信的首选。,通过硬件逻辑+Linux驱动协同设计,实现零延迟切换。在工业自动化、能源电力等场景中,RS-485凭借。

QQ_778132974的博客 830

ESP32S3 TLS 握手WIFI可用但是在蜂窝热点下卡死:排查方法与根因

设备卡在等。

摸鱼专家 86

ibatis2中的一对多和一对一映射

直接看代码。部分细节,请自行参透,你懂的。。 这里先来演示ibatis2.x中的一对多映射 首先是位于CLASSPATH中的ibatis2的全局配置文件SqlMapConfig.xml <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "h

程序员Linc 691

DeerFlow 系列教程 第十一篇 | Sandbox 沙箱与 Memory 记忆——安全执行与持久认知

用户请求│▼Lead Agent├── 系统提示词组装│ ├── <memory> 段 ← Memory 系统注入用户记忆│ ├── <skill_system> 段│ └── <subagent_system> 段│├── 工具调用│ ├── read_file ├── Sandbox 系统提供隔离执行│ ├── write_file├── 路径虚拟化 + 安全验证│└── 对话结束│▼│├── 过滤消息(去除工具调用中间步骤)├── 检测纠正/强化信号。

weixin_43674738的博客 161

【Ibatis】(四)、ibatis高级特性(表与表之间的关联)

ibatis高级特性,处理表与表之间的关联。ibatis中,提供了Statement嵌套支持,通过Statement嵌套,我们可以实现关联数据的操作。     1、一对多关联: Xml代码   sqlMap namespace="User">   typeAlias alias="user" type="com.ibatis.sample.User"/>   ty

Java 896

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ibatis 表与表的关联查询

ibatis高级特性,处理表与表之间的关联。ibatis中,提供了Statement嵌套支持,通过Statement嵌套,我们可以实现关联数据的操作。   用表lock和key为例,一个lock可以配多个key,一个key只能对应一个lock. 1、数据库表   create table lock( id int, lockName varchar ); ...

To Strive To Seek To Find Not To Yield 186

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复杂对象ibatis插入,属性为list,怎么一次性插入

转自:http://mzhj.iteye.com/blog/1030359 public class PfStuffInfoVo implements Serializable { /** 信息Id */ private String infoId; /** 项目Id */ private String proid; /** 附件信息 */ private L...

jubincn的专栏 810

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ibatis返回HashMap结果类型与映射

&lt;!-- 返回HashMap结果 类型--&gt; &lt;!-- 如果想返回JavaBean,只需将resultType设置为JavaBean的别名或全限定名 --&gt; &lt;!-- TypeAliasRegistry类初始化时注册了一些常用的别名,如果忘记了别名可以在这里面查看 --&gt; &lt;select id="selectBlogRetHashMap" pa...

kuwoleft 178

ibatis一对一、一对多实现以及性能分析

在数据库中比较常见一对一、一对多的数据,本文将叙述如何用多种方式实现这些关联关系,并对这些方法进行比对和分析。     例子假设的场景如下:     有两张表:product(产品)、category(种类),一个产品只属于某一个种类,但某一个种类下可以有多个产品。 一对一     场景:     查询某个产品,并列示出该产品所属的种类。        实现一对一的关系有两种方式。

ado1986的专栏 4205
上一篇: java谜题--Thread.join()方法容易忽略的地方
下一篇: java谜题--类初始化时容易死锁情况
feiyu8607
博客等级 码龄18年 26粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值