其实一对多关联跟我们之前的一对一关联在实现上没有区别,这里只是简单举例子说明一下。 我们以客户对订单为例。 首先创建数据库 Java代码 收藏代码 CREATE TABLE `customer` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) default NULL, `address` varchar(200) default NULL, PRIMARY KEY (`id`) ) CREATE TABLE `orders` ( `id` int(11) NOT NULL auto_increment, `code` varchar(50) default NULL, `customerid` int(11) default NULL, PRIMARY KEY (`id`), KEY `sda` (`customerid`), CONSTRAINT `sda` FOREIGN KEY (`customerid`) REFERENCES `customer` (`id`) ON DELETE CASCADE ) 订单通过一个外建与客户表关联 实体Bean Java代码 收藏代码 //客户类 public class Customer { private int id; private String name; private String address; private List<Orders> orders; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public List<Orders> getOrders() { return orders; } public void setOrders(List<Orders> orders) { this.orders = orders; } } //订单类 public class Orders { private int id; private String code; private int customerid; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public int getCustomerid() { return customerid; } public void setCustomerid(int customerid) { this.customerid = customerid; } } 下面是对应的配置文件 客户实体的配置文件 Java代码 收藏代码 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="customer"> <typeAlias alias="customerVO" type="com.bean.onetomany.Customer"/> <parameterMap class="customerVO" id="customerVOmp"> <parameter property="id" jdbcType="int"/> <parameter property="name" jdbcType="varchar"/> <parameter property="address" jdbcType="varchar"/> </parameterMap> <insert id="createCustomer" parameterMap="customerVOmp"> <selectKey keyProperty="id" type="post" resultClass="int"> select @@IDENTITY as value </selectKey> insert into customer(id,name,address) values(?,?,?) </insert> <resultMap class="customerVO" id="getCustomer"> <result column="id" property="id" jdbcType="int"/> <result column="name" property="name" jdbcType="varchar"/> <result column="address" property="address" jdbcType="varchar"/> <result property="orders" column="id" select="orders.getOrdersByCid"/> </resultMap> <select id="getCustomerByName" parameterClass="java.lang.String" resultMap="getCustomer"> select * from customer where name=#value# </select> </sqlMap> 订单实体的配置文件 Java代码 收藏代码 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="orders"> <typeAlias alias="ordersVO" type="com.bean.onetomany.Orders"/> <parameterMap class="ordersVO" id="ordersVOmp"> <parameter property="id" jdbcType="int"/> <parameter property="code" jdbcType="varchar"/> <parameter property="customerid" jdbcType="int"/> </parameterMap> <insert id="createOrders" parameterMap="ordersVOmp"> <selectKey> select @@IDENTITY as value </selectKey> insert into orders(id,code,customerid) values(?,?,?) </insert> <select id="getOrdersByCid" parameterClass="int" resultClass="ordersVO"> select * from orders where customerid = #value# </select> </sqlMap> 测试方法新增操作 与onetoone的新增没有本质区别 预习了一下之前的批次处理的方式 Java代码 收藏代码 Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); Customer c1 = new Customer(); c1.setName("customer1"); c1.setAddress("c1_address1"); sqlMap.startTransaction(); sqlMap.insert("customer.createCustomer", c1); sqlMap.startBatch(); for(int i = 0;i<10;i++){ Orders o = new Orders(); o.setCustomerid(c1.getId()); o.setCode("code_c1 "+i); sqlMap.insert("orders.createOrders", o); } sqlMap.executeBatch(); sqlMap.commitTransaction(); 查询方法 实现了customer 到orders 的一对多查询 Java代码 收藏代码 Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); Customer customer = (Customer)sqlMap.queryForObject("customer.getCustomerByName", "customer1"); System.out.println(customer.getAddress()); List<Orders> orders = customer.getOrders(); for(int i = 0 ; i<orders.size();i++){ Orders o = orders.get(i); System.out.println(o.getCode()); }
相关推荐
MYBATISMYBATIS
Mybatis框架基础 Mybatis是一个流行的关系型数据库访问框架,它的主要目的是为了简化Java开发者对数据库操作的复杂性,提供了一种快速实现数据访问的方法。在传统的Java开发中,使用JDBC(Java Database ...
2024 mybatis plugin
MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java应用程序与数据库之间的交互,提供了更为灵活的SQL映射和对象关系映射。在这个"mybatis demo"中,我们将会探讨MyBatis的一些核心概念和实践应用。 首先,`...
学习mybatis 不创建maven 需要下载jar包 但是在GitHub上下载实在是太慢了,有时还可能下载不了。分享一下
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...
MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...
基于mybatis的慢SQL小插件,原理是mybatis拦截器。只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL...
Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...
【MyBatisDemo】是一个基于Java的持久层框架,它主要负责数据库的CRUD(创建、读取、更新、删除)操作。MyBatis通过简化SQL的处理,将数据库操作与业务逻辑解耦,提高了开发效率。这个项目演示了如何在实际应用中...
MybatisX是一款专为开发人员设计的高效能且完全免费的IntelliJ IDEA插件,其版本号为1.4.17。这款插件针对Mybatis框架进行了深度优化,旨在提升开发者的开发效率和代码质量。MybatisX的主要功能包括但不限于SQL跳转...
MyBatis 详解 MyBatis 是一个基于 Java 的持久层框架,它提供了一个简单的方式来交互数据库。下面是 MyBatis 的详解: MyBatis 基本概念 MyBatis 是一个基于传统 DAO 模式开发的框架,提供了一个简单的方式来交互...
说明:有关国产数据库完整的博客太少了,所以就想弄一个完整的专栏给大家提供一些帮助。在现在这种国际形势下,网络安全是每个企业,乃至整个国家重中之重的事,国产化是一种趋势,在整合之前先了解一下达梦数据库。...
MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and...
MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java开发中的数据库操作,使得开发者可以更加专注于SQL语句的编写,而无需过多关注底层的JDBC代码。"Free MyBatis Plugins" 提供了对MyBatis的增强功能,帮助...
在IT行业中,SpringMVC、Spring和Mybatis是三大核心框架,它们的集成使用是Java Web开发中的常见实践。这个集成开发环境旨在提供一个高效、灵活的开发平台,以实现业务逻辑与数据访问的分离,提高代码的可维护性和可...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在本练习中,我们将深入探讨这些文件所涵盖的MyBatis核心知识点。 1. **mybatis2_3_sql**: 这个文件可能包含了SQL查询语句。在MyBatis...
MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...