mybatis 学习记录(4.1)—— 级联查询(无 association 和 collection)
2017-05-21 17:19
597 查看
版权声明:版权声明:尊重他人劳动成果,转载请注明出处:
http://blog.csdn.net/czd3355/article/details/72599643
stu 表有 id,name,t_id 字段。其中 t_id 为外键字段。
Student.java
Teacher.java
映射文件(studentMapper.xml)
小提示 1:这里为什么要写成
回答:这是由下面的 SQL 查询返回的结果决定的。本 SQL 需要返回 stu 表的 id 和 name 字段。那么我们就需要将找到一个对象来接收 SQL 返回的字段。而在
另外需要补充的是:如果表字段名和对应 bean 属性名一样的话,可以使用
resultType 和 resultMap 是不能同时存在的。
输出结果:
从上图我们可以看出 SQL 成功执行并且影响了两条记录。(即查询到了两条符合要求的记录)
http://blog.csdn.net/czd3355/article/details/72599643
1. 先前介绍
本文是对 mybatis 级联操作最简单操作的介绍,如果想要了解有关 association 和 collection 内容的话,可以移步到这篇文章进行阅读。 mybatis 学习记录(4.2)—— 级联操作(有 association 和 collection)1.1 数据库关系:
teacher 表有 id,name 字段stu 表有 id,name,t_id 字段。其中 t_id 为外键字段。
1.2 bean 代码
bean 之间的关系:一名老师可以有多名学生Student.java
public class Student { private Integer id; private String name; private Teacher teacher; // 省略 get/set 方法 }
Teacher.java
public class Teacher { private String name; private Integer id; private List<Student> studentList; // 省略 get/set 方法 }
2. 一对多查询
关键代码:@Test public void main() throws Exception { OneToManyDao oneToManyDao = new OneToManyDao(); oneToManyDao.testFindByName("t1"); } /** * 根据老师名字,查询该老师的所有学生 * @param name 老师名字 * @return 该老师的所有学生 * @throws Exception */ public List<Student> testFindByName(String name) throws Exception { SqlSession sqlSession = getSession().openSession(); return sqlSession.selectList(stuDaoNameSpace+ ".findByName", name); }
映射文件(studentMapper.xml)
<mapper namespace="com.czd.mybatis02.dao.StudentDao"> <resultMap id="StudentMap" type="com.czd.mybatis02.bean.Student"> <id property="id" column="id"></id> <result property="name" column="name"></result> </resultMap> <!--本例很简单,只是通过 INNER JOIN 实现级联操作就可以了--> <select id="findByName" parameterType="string" resultMap="StudentMap"> SELECT s.id,s.name FROM stu s INNER JOIN teacher t ON s.t_id = t.id AND t.name = #{name} </select> </mapper>
小提示 1:这里为什么要写成
resultMap="StudentMap"呢?
回答:这是由下面的 SQL 查询返回的结果决定的。本 SQL 需要返回 stu 表的 id 和 name 字段。那么我们就需要将找到一个对象来接收 SQL 返回的字段。而在
resultMap标签中,正好封装了这两个字段,因此我们可以这么写。
另外需要补充的是:如果表字段名和对应 bean 属性名一样的话,可以使用
resultType="com.czd.mybatis02.bean.Student"代替上面的
resultMap="StudentMap"。在这里使用
resultMap的目的就是为了解决表字段名和对应 bean 属性名不一致,导致无法通过反射将彼此成功映射的问题。
resultType 和 resultMap 是不能同时存在的。
输出结果:
从上图我们可以看出 SQL 成功执行并且影响了两条记录。(即查询到了两条符合要求的记录)
相关文章推荐
- mybatis 学习记录(4.2)—— 级联查询(有 association 和 collection)
- myBatis中 collection 或 association 联合查询 中column 传入多个参数值
- Mybatis中使用Collection元素进行一对多级联查询
- 【Mybatis学习总结四】实现关联表查询----一对一关联(association)
- Mybatis学习记录(四)--高级查询和缓存
- 在学习Mybatis过程中,总是对于Collection和Association混淆了,关键还是初学,不怎么熟悉,所以整理一下。
- mybatis用association指定外键结合select实现级联属性查询
- MyBatis的collection只能查询一条记录
- mybatis 学习记录(2)—— 分页查询
- Mybatis学习记录(七)----Mybatis查询缓存
- Mybatis中使用Association元素进行一对一级联查询
- mybatis级联问题(association、collection和discriminator)
- Mybatis的一对多(collection)和一对一(association)查询
- [置顶] 【Mybatis】深入浅出Mybatis(十三)——使用association和collection实现关联查询
- MyBatis学习总结——实现级联表查询(一对一,一对多)
- 【Mybatis学习总结五】实现关联表查询----一对多关联(collection)
- Mybatis学习记录(四)--高级查询和缓存
- MyBatis的级联查询(association 进行分布查询)
- mybatis 使用resultMap实现关联数据的查询(association 和collection )
- mybatis ----数据级联查询(多对一)