mybatis多表查询
/* *作者:呆萌老师 *☑csdn认证讲师 *☑51cto高级讲师 *☑腾讯课堂认证讲师 *☑网易云课堂认证讲师 *☑华为开发者学堂认证讲师 *☑爱奇艺千人名师计划成员 *在这里给大家分享技术、知识和生活 *各种干货,记得关注哦! *vx:it_daimeng */
一个学生对应一个班级的情况
方法1:
<!-- 多表查询 -->
<!-- 用户表和班级表进行内连接查询 -->
<!-- 不能用resultType 要用resultMap 里面的类型需要自己定义-->
方法2:
<!-- 将内连接拆分成两个查询语句 -->
<select id="selectUserinfo" resultMap="userinfoMap2" >
select * from userinfo
</select>
<select id="selectGradeByCid" parameterType="int" resultType="Grade" >
select * from grade where cid=#{cid}
</select>
<resultMap type="Userinfo" id="userinfoMap2">
<id property="uid" column="uid" />
<result property="name" column="name" />
<result property="age" column="age" />
<association property="grade" column="cid" select="selectGradeByCid">
</association>
</resultMap>
一个班级对应多个学生的情况
<!-- 分开查询 -->
Dao:
//1.读取配置文件
InputStream is=this.getClass().getClassLoader().getResourceAsStream("mybatis.xml");
//2.获取会话工厂创建者
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//3.获取会话工厂
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
//4.获取会话
SqlSession sqlSession=sqlSessionFactory.openSession();
//5.查询
List<Userinfo> userlist=sqlSession.selectList("com.test.bean.UserinfoMapper.selectUserinfo",1);
//关闭会话
sqlSession.close();
for(int i=0;i<userlist.size();i++)
System.out.println(userlist.get(i).toString());