多对一和一对多

时间:2022-07-28
本文章向大家介绍多对一和一对多,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.UserMapper.xml代码

<?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="dao.UserDao">

    <resultMap id="userMap" type="entity.User">
        <id column="u_id" property="uid"></id>
        <result column="u_name" property="uname"></result>
        <result column="u_password" property="upassword"></result>
        <result column="u_email" property="uemail"></result>
        <result column="u_sex" property="usex"></result>
        <result column="u_status" property="ustatus"></result>
        <result column="u_code" property="ucode"></result>
        <result column="u_role" property="urole"></result>
<!--      collection 一对多:1.property:里面的多的那方的集合orders   private List<Orders> orders;
                            2.ofType:property里面那个集合里包含的对象的类型:entity.Orders(在没有使用别名的时候用包名.类名)
  -->
        <collection property="orders" ofType="entity.Orders">
            <id column="o_id" property="oid"></id>
            <result column="o_name" property="oname"></result>
<!--           association 一对多:1. property:里面一的那个的对象user   private User user;
                                  2. javaType:property里面对象的类型:entity.User
 -->
            <association property="user" javaType="entity.User">
                <id column="u_id" property="uid"></id>
                <result column="u_name" property="uname"></result>
                <result column="u_password" property="upassword"></result>
                <result column="u_email" property="uemail"></result>
                <result column="u_sex" property="usex"></result>
                <result column="u_status" property="ustatus"></result>
                <result column="u_code" property="ucode"></result>
                <result column="u_role" property="urole"></result>
            </association>
        </collection>
    </resultMap>
    
    <select id="getUserById" resultMap="userMap">
        SELECT u.*,o.* FROM USER u LEFT JOIN orders o ON u.u_id=o.u_id WHERE u.u_id=#{id};
    </select>
    
</mapper>

2.Test002.java代码

import dao.UserDao;
import entity.User;
import utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

/**
 * zt
 * 2020/9/27
 * 20:46
 */
public class Test002 {
    @Test
    public void testGetUserById(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        User userById = mapper.getUserById(1);
        System.out.println(userById);
    }
}

3.mybatisConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--mybatis-3-config.dtd xml的约束-->
<configuration>
    <properties resource="dbinfo.properties"></properties>
    <settings>
        <!--配置mybatis底层处理打印日志-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

    <!--连库环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--
        指定映射文件
    -->
    <mappers>
        <mapper resource="mapper/ProductMapper.xml"></mapper>
        <mapper  resource="mapper/ProductDetailMapper.xml"></mapper>
        <mapper  resource="mapper/OrdersMapper.xml"></mapper>
        <mapper  resource="mapper/GuaMapper.xml"></mapper>
        <mapper  resource="mapper/UserMapper.xml"></mapper>

    </mappers>
</configuration>