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

相关文章
|
3月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
2月前
|
SQL XML Java
Mybatis中一对一和一对多的处理
这篇文章讲解了在Mybatis中如何处理一对一和一对多的关系映射,包括使用association和collection标签的具体方法。
61 1
|
4月前
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
6月前
|
Java 数据库连接 mybatis
Mybatis基于注解的一对一和一对多查询
Mybatis基于注解的一对一和一对多查询
|
6月前
|
SQL Java 数据库连接
Mybatis中一对多mapper配置
Mybatis中一对多mapper配置
|
2月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
154 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
83 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
575 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
32 0
mybatis使用二:springboot 整合 mybatis,创建开发环境
|
2月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
178 1