mybatis 多对一的理解

来源:互联网 发布:linux启动jenkins 编辑:程序博客网 时间:2024/05/21 19:42

对于mybatis 的一对多,还以多对一,其实是找那个站在不同的角度来思考的问题,本质给我的感觉,才不多



<?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="org.com.dao.userMapper">
    <!-- User 级联文章查询 方法配置 (多个文章对一个用户)  -->
    
    <resultMap type="Post" id="resultPostsMap">
        <result property="id" column="post_id" />
        <result property="title" column="title" />
        <result property="content" column="content" />
        <association property="user" javaType="User">  
            <id property="id" column="userid"/>   
            <result property="username" column="username"/>   
            <result property="mobile" column="mobile"/>   
        </association>
    </resultMap>

    <select id="getPosts" resultMap="resultPostsMap" parameterType="int">
        SELECT u.*,p.*
        FROM user u, post p
        WHERE u.id=p.userid AND p.post_id=#{post_id}
  </select>

</mapper>


总结    

mybatis  一对多  collection 直接将post的外键 放在collection里面, mybatis 会自己识别

后面id接post表的主键

<collection property="posts" ofType="org.com.model.Post" column="userid">  

<id property="id" column="post_id" javaType="int" jdbcType="INTEGER"/>   主键



mybatis 多对一  association,里面不用什么,他会直接,将user 表的主键,作为post的外建

然后申明post表里面那个是外建


<association property="user" javaType="User">  
            <id property="id" column="userid"/>


,。。。。。


在test类里,值得说说的是,直接应用的是selectOne()

我没有建立PostMappper,所以不能再用getMappper()




public class Test {
    private static SqlSessionFactory sqlFactory;
    private static Reader reader;
    
    static {
        try {
            reader = Resources.getResourceAsReader("config/mybatis-config.xml");
            sqlFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
    
    public static SqlSessionFactory getSession(){
        return sqlFactory;
    }
    
    public static void main(String[] args) {
        SqlSession session = getSession().openSession();
        
        try {
//    postMapper posts=session.getMapper(postMapper.class);
//    Post p=posts.getPosts(1);
//    System.out.println(p.getUser().getMobile());
    
    
    Post  p=session.selectOne("org.com.dao.userMapper.getPosts",1);
    
    System.out.println(p.getUser().getMobile());
            
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            session.close();
        }
    }

}

//    Resources  SqlSessionFactoryBuilder  SqlSessionFactory  SqlSession





原文
http://www.yiibai.com/mybatis/mybatis-many2one.html

原创粉丝点击