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