Mybatis高级查询(一)
来源:互联网 发布:新代数控车床编程实例 编辑:程序博客网 时间:2024/05/18 03:57
联合查询:association
模拟业务场景:一个学生应该在一个班级里,模拟一对一关系。
改造之前的Student类,增加一个属性Class。
package com.hbk.pojo;public class Student { private int id; private String name; private int age; private Class classId; public Class getClassId() { return classId; } public void setClassId(Class classId) { this.classId = classId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
Class类就id,name属性,以及get set方法,代码略。
在mybatis-config.xml文件中加入class的别名
<typeAliases> <typeAlias type="com.hbk.pojo.Student" alias="Student"/> <typeAlias type="com.hbk.pojo.Class" alias="Class"/></typeAliases>
在student.xml文件中加入查询SQL
<resultMap type="Student" id="StudentMapOne"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="age" property="age"/> <association property="classId" javaType="Class" column="classid"> <id column="classId" property="id"/> <result column="className" property="name"/> </association> </resultMap> <select id="findOneToOne" resultMap="StudentMapOne" > select stu.id,stu.name,c.id as classId,c.name as className from student stu inner join class c on stu.classid = c.id </select>
测试及结果:
package com.hbk.test;import java.io.IOException;import java.io.Reader;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.hbk.pojo.Student;public class StudentTest { public static void main(String[] args) { String resource = "com/hbk/map/mybatis-config.xml"; try { Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession sqlSession = sqlSessionFactory.openSession(); List<Student> lists = sqlSession.selectList("findOneToOne"); for(Student stu : lists){ System.out.println(stu.getName()+" 班级名称="+stu.getClassId().getName()); } sqlSession.commit(); sqlSession.close(); } catch (IOException e) { e.printStackTrace(); } }}
数据库student表增加classid列,并增加class表。
之前测试的时候踩过一个坑,sql语句里一定要使用别名,要不然会出现问题,因为我设计表当中,student(id,name,age,classid)跟class(id,name)有同名的列。
阅读全文
0 0
- Mybatis高级查询(一)
- mybatis高级映射一对多查询(一)
- mybatis高级查询(一对一查询)
- Mybatis 嵌套查询(高级结果映射)
- MyBatis高级映射(一对一查询)
- MyBatis高级映射(一对多查询)
- [Mybatis]高级查询
- MyBatis-高级查询
- mybatis之高级查询
- MyBatis-高级查询
- MyBatis高级查询
- mybatis高级查询
- 三.Mybatis高级查询
- MyBatis高级查询
- MongoDB 高级查询(一)
- oracle 高级查询(一)
- oracle--高级查询(一)
- Oracle高级查询(一)
- 蓝牙概述+nrf51822串口数据透传的程序
- JavaScript基础之JQuery与DOM
- 安卓拉窗帘效果
- MySQL:错误代码1215 无法添加外键约束的解决思路
- 数据结构java实现
- Mybatis高级查询(一)
- JavaScript: switch用法及注意事项
- Android 设计模式
- token相关
- Leetcode c语言-Remove Duplicates from Sorted Array
- 3SumCloset
- 做自媒体文章的淘宝客面对这两个节日所要注意的几点!
- Http通讯类
- @RestController注解与@Controller 注解的区别