其实一对多关联跟我们之前的一对一关联在实现上没有区别,这里只是简单举例子说明一下。 我们以客户对订单为例。 首先创建数据库 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()); }
相关推荐
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
解决mybatis头文件报错 下载好压缩包 解压将文件放到本地文件夹 例如 D盘的哪个文件夹 D:\mybatis\ ;然后打开eclipse ->Window->prefenrence->XML->XML Catalog->User Specifiled Entreis->Add->Location(此处是你...
本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...
free-idea-mybatis is an enchange plugin for idea to supoort mybatis,here is the main functions: generate mapper xml files navigate from the code to mapper and from the mapper back to code auto code...
赠送jar包:mybatis-spring-2.0.0.jar; 赠送原API文档:mybatis-spring-2.0.0-javadoc.jar; 赠送源代码:mybatis-spring-2.0.0-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.0.pom; 包含翻译后的API...
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.7-sources.jar; 赠送Maven依赖信息文件:mybatis-generator-...
基于mybatis的慢SQL小插件,原理是mybatis拦截器。只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL...
赠送jar包:mybatis-3.5.9.jar; 赠送原API文档:mybatis-3.5.9-javadoc.jar; 赠送源代码:mybatis-3.5.9-sources.jar; 赠送Maven依赖信息文件:mybatis-3.5.9.pom; 包含翻译后的API文档:mybatis-3.5.9-javadoc-...
当前已经是移动互联网时代,Java持久框架Hibernate没有办法适应高性能,灵活,大数据,可优化等要求,这时MyBatis就进入了我们的视野,随着移动互联网应用的持续发酵,Spring MyBatis的应用已在Java互联网平台上得到...
开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2...
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...
生成已tk.mybatis封装的mybatis代码
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类。 这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 ...
mybatis源码是mybatis-3.2.6的源码,用户使用mybatis时可以进行参考
MyBatis 详解与配置 MyBatis MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的 JDBC 代码、手工设置参数和结果集重获。MyBatis 只使用简单的 XML 和注解来配置和映射基本...
随着大数据时代的到来,Java 持久层框架MyBatis 已经成为越来越多企业的选择。遗憾的是,时至今日国内依然没有一本讨论MyBatis 的书,这增加了初学者的学习难度,初学者往往只能基于零星的案例来学习MyBatis,无法...
此项目为springmvc、Mybatis、EHcache、maven、Spring security3、activiti5工作流的整合 是一个基于数据库的权限管理demo项目、使用mysql数据库 项目运行前需要构建maven私服 而且有些jar包私服中肯定没有,需要...
该jar包是Mybatis和Spring整合必备jar包,适配Mybatis-3.4.0及以上版本。
MyBatis3官方中文文档高清 MyBatis3官方中文文档高清 MyBatis3官方中文文档高清 MyBatis3官方中文文档高清