mybatis的一对一 一对多 多对多

简介: mybatis的一对一 一对多 多对多 1、表 2、建表语句 order_t表 CREATE TABLE `order_t` ( `id` int(11) NOT NULL, `user_id` int(11) DEFAULT NULL, `createtime` datetime DEFAU.

mybatis的一对一 一对多 多对多

1、表

2、建表语句

order_t表

CREATE TABLE `order_t` (
`id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`createtime` datetime DEFAULT NULL,
`note` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
CONSTRAINT `order_t_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `items` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

orderdetail表

CREATE TABLE `orderdetail` (
`id` int(11) NOT NULL,
`order_id` int(11) DEFAULT NULL,
`item_id` int(11) DEFAULT NULL,
`item_num` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `order_id` (`order_id`),
KEY `item_id` (`item_id`),
CONSTRAINT `orderdetail_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `order_t` (`id`),
CONSTRAINT `orderdetail_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `items` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

items表

CREATE TABLE `items` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`price` double DEFAULT NULL,
`detail` varchar(255) DEFAULT NULL,
`pic` varchar(255) DEFAULT NULL,
`createtime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

user表

CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

3、pojo

public class Items {

    private Integer id;
    private String name;
    private Double price;
    private String detail;
    private String pic;
    private Timestamp datetime;
    private OrderDetail orderDetail;
public class Order {

    private Integer order_id;
    private User user;
    private Timestamp datetime;
    private String note;
    private OrderDetail orderDetail;
public class OrderDetail {

    private Integer id;
    private Order order;
    private List<Items> itemsList;
    private Integer item_num;
public class User {

    private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private List<Order> orderList;

4、mapper与mapper.xml

public interface UserMapper {

     List<User> findAll();

     void insert(User user);

    void update(User user);

    void delete(Integer id);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.evior.test.mapper.UserMapper">
    <resultMap id="userRM" type="com.evior.test.pojo.User">
        <id property="id" column="id"/>
        <result property="age" column="age"/>
        <result property="name" column="name"/>
        <result property="sex" column="sex"/>
        <collection property="orderList" ofType="com.evior.test.pojo.Order">
            <id property="order_id" column="order_id"/>
            <result property="note" column="note"/>
            <result property="datetime" column="createtime"/>
            <association property="orderDetail" javaType="com.evior.test.pojo.OrderDetail">
                <id property="id" column="id"/>
                <result property="item_num" column="item_num"/>
                <collection property="itemsList" ofType="com.evior.test.pojo.Items">
                    <id property="id" column="id"/>
                    <result property="name" column="name"/>
                    <result property="price" column="price"/>
                    <result property="detail" column="detail"/>
                    <result property="pic" column="pic"/>
                    <result property="datetime" column="createtime"/>
                </collection>
            </association>
        </collection>
    </resultMap>

    <select id="findAll" resultMap="userRM">
        SELECT u.*,o.* ,od.*,i.*
        FROM USER u,order_t o ,orderdetail od,items i
        WHERE u.`id`=o.`user_id`
        AND od.`id`=o.`id`
        AND i.`id`=od.`item_id`;
    </select>

    <insert id="insert" parameterType="com.evior.test.pojo.User">
         INSERT INTO USER(id,NAME,age,sex) VALUES(#{id},#{name},#{age},#{sex});
    </insert>

    <update id="update" parameterType="com.evior.test.pojo.User">
        UPDATE USER
        <set>
            <if test="age!=null">AGE=#{age},</if>
            <if test="name!=null">NAME =#{name},</if>
            <if test="id!=null">SEX=#{sex},</if>
        </set>
        <where>
            ID=#{id}
        </where>
    </update>


    <delete id="delete" parameterType="int">
        DELETE FROM USER WHERE id=#{id};
    </delete>
</mapper>
public interface OrderMapper {
    List<Order> findAll();

    void insert(Order order);

    void update(Order order);

    void delete(Integer order_id);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.evior.test.mapper.OrderMapper">
    <resultMap id="orderRM" type="com.evior.test.pojo.Order">
        <id property="order_id" column="id"/>
        <result property="datetime" column="createtime"/>
        <result property="note" column="note"/>
        <association property="user" javaType="com.evior.test.pojo.User">
            <id property="id" column="id"/>
            <result property="age" column="age"/>
            <result property="name" column="name"/>
            <result property="sex" column="sex"/>
        </association>
         <association property="orderDetail" javaType="com.evior.test.pojo.OrderDetail">
             <id property="id" column="id"/>
             <result property="item_num" column="item_num"/>
             <collection property="itemsList" ofType="com.evior.test.pojo.Items">
                 <id property="id" column="id"/>
                 <result property="pic" column="pic"/>
                 <result property="detail" column="detail"/>
                 <result property="price" column="price"/>
                 <result property="name" column="name"/>
                 <result property="datetime" column="createtime"/>
             </collection>
         </association>
    </resultMap>

    <select id="findAll" resultMap="orderRM">
        SELECT o.*,u.* ,od.*,i.*
        FROM USER u,order_t o ,orderdetail od,items i
        WHERE u.`id`=o.`user_id`
        AND od.`id`=o.`id`
        AND i.`orderdetail_id`=od.`id`
    </select>

    <insert id="insert" parameterType="com.evior.test.pojo.Order">
        INSERT INTO ORDER_T(id,user_id,createtime,note)
        VALUES(#{order_id},#{user.id},#{datetime},#{note});
    </insert>

    <update id="update" parameterType="com.evior.test.pojo.Order">
        UPDATE ORDER_T
        <set>
            <if test="user.id!=null">USER_ID=#{user.id},</if>
            <if test="datetime!=null">CREATETIME =#{datetime},</if>
            <if test="note!=null">NOTE=#{note},</if>
        </set>
        <where>
            ID=#{order_id}
        </where>
    </update>


    <delete id="delete" parameterType="int">
        DELETE FROM ORDER_T
        WHERE id=#{order_id};
    </delete>
</mapper>

 

public interface OrderDetailMapper {
    List<OrderDetail> findAll();

    void insert(OrderDetail orderDetail);

    void update(OrderDetail orderDetail);

    void delete(Integer id);
}
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.evior.test.mapper.OrderDetailMapper">
    <resultMap id="orderDetailRM" type="com.evior.test.pojo.OrderDetail">
        <id property="id" column="id"/>
        <result property="item_num" column="item_num"/>
        <association property="order" javaType="com.evior.test.pojo.Order">
            <id property="order_id" column="order_id"/>
            <result property="datetime" column="createtime"/>
            <result property="note" column="note"/>
            <association property="user" javaType="com.evior.test.pojo.User">
                <id property="id" column="id"/>
                <result property="sex" column="sex"/>
                <result property="name" column="name"/>
                <result property="age" column="age"/>
            </association>
        </association>
        <collection property="itemsList" ofType="com.evior.test.pojo.Items">
            <id property="id" column="id"/>
            <result property="datetime" column="createtime"/>
            <result property="name" column="name"/>
            <result property="price" column="price"/>
            <result property="detail" column="detail"/>
            <result property="pic" column="pic"/>
        </collection>
    </resultMap>

    <select id="findAll" resultMap="orderDetailRM">
         SELECT o.*,u.* ,od.*,i.*
        FROM USER u,order_t o ,orderdetail od,items i
        WHERE u.`id`=o.`user_id`
        AND od.`id`=o.`id`
        AND i.`orderdetail_id`=od.`id`
    </select>

    <insert id="insert" parameterType="com.evior.test.pojo.OrderDetail">
        INSERT INTO orderdetail(id,order_id,item_num)
        VALUES(#{id},#{order.order_id},#{item_num});
    </insert>

    <update id="update" parameterType="com.evior.test.pojo.OrderDetail">
        UPDATE orderdetail
        <set>
            <if test="order.order_id!=null">ORDER_ID=#{order.order_id},</if>
            <if test="item_num!=null">ITEM_NUM=#{item_num},</if>
        </set>
        <where>
            ID=#{id}
        </where>
    </update>


    <delete id="delete" parameterType="int">
        DELETE FROM orderdetail
        WHERE id=#{id};
    </delete>
</mapper>
public interface ItemsMapper {
    List<Items> findAll();

    void insert(Items items);

    void update(Items items);

    void delete(Integer id);
}

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.evior.test.mapper.ItemsMapper">
    <resultMap id="ItemsRM" type="com.evior.test.pojo.Items">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="price" column="price"/>
        <result property="detail" column="detail"/>
        <result property="datetime" column="createtime"/>
        <association property="orderDetail" javaType="com.evior.test.pojo.OrderDetail">
            <id property="id" column="id"/>
            <result property="item_num" column="item_num"/>
            <association property="order" javaType="com.evior.test.pojo.Order">
                <id property="order_id" column="id"/>
                <result property="note" column="note"/>
                <result property="datetime" column="createtime"/>
                <association property="user" javaType="com.evior.test.pojo.User">
                    <id property="id" column="id"/>
                    <result property="age" column="age"/>
                    <result property="name" column="name"/>
                    <result property="sex" column="sex"/>
                </association>
            </association>
        </association>

    </resultMap>

    <select id="findAll" resultMap="ItemsRM">
        SELECT o.*,u.* ,od.*,i.*
        FROM USER u,order_t o ,orderdetail od,items i
        WHERE u.`id`=o.`user_id`
        AND od.`id`=o.`id`
        AND i.`orderdetail_id`=od.`id`
    </select>

    <insert id="insert" parameterType="com.evior.test.pojo.Items">
        INSERT INTO items(id,name,price,detail,pic,createtime,orderdetail_id)
        VALUES(#{id},#{name},#{price},#{detail},#{pic},#{datetime},#{orderDetail.id});
    </insert>

    <update id="update" parameterType="com.evior.test.pojo.Items">
        UPDATE items
        <set>
            <if test="name!=null">NAME=#{name},</if>
            <if test="price!=null">PRICE =#{price},</if>
            <if test="detail!=null">DETAIL=#{detail},</if>
            <if test="pic!=null">PIC=#{pic},</if>
            <if test="datetime!=null">CREATETIME=#{datetime},</if>
            <if test="orderDetail.id!=null">ORDERDETAIL_ID=#{orderDetail.id},</if>
        </set>
        <where>
            ID=#{id}
        </where>
    </update>


    <delete id="delete" parameterType="int">
        DELETE FROM items
        WHERE id=#{id};
    </delete>
</mapper>

原文地址http://www.bieryun.com/3366.html

相关文章
|
12月前
|
XML Java 数据库连接
Mybatis一对一,一对多关联查询
## MyBatis一对一、一对多关联查询详解 MyBatis是一款优秀的持久层框架,提供了灵活的SQL映射功能,支持复杂的数据库操作。本文将详细介绍MyBatis中一对一和一对多关联查询的实现。 ### 一对一关联查询 一对一关联关系指的是一个表中的一条记录与另一个表中的一条记录相关联。例如,一个用户有一个地址信息。 #### 数据库表设计 假设有两个表:`user`和 `address`。 ``` CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE address
368 18
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
SQL XML Java
Mybatis中一对一和一对多的处理
这篇文章讲解了在Mybatis中如何处理一对一和一对多的关系映射,包括使用association和collection标签的具体方法。
398 1
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
Java 数据库连接 mybatis
Mybatis基于注解的一对一和一对多查询
Mybatis基于注解的一对一和一对多查询
150 0
|
7月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1263 1
Spring boot 使用mybatis generator 自动生成代码插件
|
10月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
800 0
|
12月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
584 2
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
653 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
615 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块