`

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());  
    }  

 

分享到:
评论

相关推荐

    MYBATISMYBATISMYBATISMYBATIS

    MYBATISMYBATIS

    Mybatis框架基础

    Mybatis框架基础 Mybatis是一个流行的关系型数据库访问框架,它的主要目的是为了简化Java开发者对数据库操作的复杂性,提供了一种快速实现数据访问的方法。在传统的Java开发中,使用JDBC(Java Database ...

    2024 mybatis plugin

    2024 mybatis plugin

    mybatis demo

    MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java应用程序与数据库之间的交互,提供了更为灵活的SQL映射和对象关系映射。在这个"mybatis demo"中,我们将会探讨MyBatis的一些核心概念和实践应用。 首先,`...

    mybatis3.5.6

    学习mybatis 不创建maven 需要下载jar包 但是在GitHub上下载实在是太慢了,有时还可能下载不了。分享一下

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

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

    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入门.pdf

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

    mybatis慢SQL插件

    基于mybatis的慢SQL小插件,原理是mybatis拦截器。只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL...

    Mybatis 处理 CLOB、BLOB 类型数据

    Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...

    MyBatisDemo

    【MyBatisDemo】是一个基于Java的持久层框架,它主要负责数据库的CRUD(创建、读取、更新、删除)操作。MyBatis通过简化SQL的处理,将数据库操作与业务逻辑解耦,提高了开发效率。这个项目演示了如何在实际应用中...

    MybatisX-1.4.17.zip

    MybatisX是一款专为开发人员设计的高效能且完全免费的IntelliJ IDEA插件,其版本号为1.4.17。这款插件针对Mybatis框架进行了深度优化,旨在提升开发者的开发效率和代码质量。MybatisX的主要功能包括但不限于SQL跳转...

    MyBatis.pdf

    MyBatis 详解 MyBatis 是一个基于 Java 的持久层框架,它提供了一个简单的方式来交互数据库。下面是 MyBatis 的详解: MyBatis 基本概念 MyBatis 是一个基于传统 DAO 模式开发的框架,提供了一个简单的方式来交互...

    Mybatis整合人大金仓

    说明:有关国产数据库完整的博客太少了,所以就想弄一个完整的专栏给大家提供一些帮助。在现在这种国际形势下,网络安全是每个企业,乃至整个国家重中之重的事,国产化是一种趋势,在整合之前先了解一下达梦数据库。...

    mybatis-3.5.10.zip

    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...

    free mybatis plugins

    MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java开发中的数据库操作,使得开发者可以更加专注于SQL语句的编写,而无需过多关注底层的JDBC代码。"Free MyBatis Plugins" 提供了对MyBatis的增强功能,帮助...

    SpringMVC+Spring+Mybatis集成开发环境

    在IT行业中,SpringMVC、Spring和Mybatis是三大核心框架,它们的集成使用是Java Web开发中的常见实践。这个集成开发环境旨在提供一个高效、灵活的开发平台,以实现业务逻辑与数据访问的分离,提高代码的可维护性和可...

    mybatis小练习

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在本练习中,我们将深入探讨这些文件所涵盖的MyBatis核心知识点。 1. **mybatis2_3_sql**: 这个文件可能包含了SQL查询语句。在MyBatis...

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

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

Global site tag (gtag.js) - Google Analytics