mybatis 多对一的理解

xiaoxiao2021-02-28  109

对于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

转载请注明原文地址: https://www.6miu.com/read-61021.html

最新回复(0)