`

mybatis

 
阅读更多
其实一对多关联跟我们之前的一对一关联在实现上没有区别,这里只是简单举例子说明一下。
我们以客户对订单为例。
首先创建数据库
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());  
    }  

 

分享到:
评论

相关推荐

    Spring+SpringMVC+Mybatis框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    MybatisGenerate_代码生成_tkMybatis_mybatisgenerate_mybatis_

    MybatisGenerate是一个强大的工具,主要用于自动化生成Mybatis相关的代码,以提高开发效率并减少手动编写重复性工作的负担。这个工具是基于tk.mybatis框架的,它整合了Mybatis的优秀特性,使得开发者能够更加便捷地...

    mybatis的中文api文档

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...

    mybatis3.5.7.zip

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...

    mybatis-3-mybatis-3.2.6

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、...

    【狂神说】mybatis学习总结笔记(全)PDF格式文档 MyBatis.pdf

    MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...

    mybatis中文离线文档

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    高效数据脱敏工具 - MyBatis-Cipher,基于MyBatis的数据库敏感信息加密解密方案

    项目名称:MyBatis-Cipher - 高效数据脱敏工具 项目简介: MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行...

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...

    mybatisx.zip

    这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    MyBatis-Plus入门+MyBatis-Plus文档手册 中文pdf高清版.rar

    mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...

    IDEA的MyBatis插件两个

    本篇文章将详细介绍两个针对MyBatis框架的IntelliJ IDEA插件——MyBatisCodeHelper-Pro和MybatisX,它们都是为了提升MyBatis开发体验而设计的。 首先,我们来看MyBatisCodeHelper-Pro。这款插件是专为MyBatis开发者...

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...

    MyBatis3官方中文文档

    MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...

    MyBatis入门到精通

    MyBatis是一款强大的Java持久层框架,它将SQL与Java代码分离,使开发者可以更方便地操作数据库。这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. *...

    MyBatis入门.pdf

    MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...

    MyBatis-3.4.6.zip

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密

    "基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...

    mybatis_3.5.9官方中文文档pdf

    MyBatis 官方中文文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置...

Global site tag (gtag.js) - Google Analytics