mybatis多对一数据库查询
StudentMapper.java
package dao; import pojo.Student; import java.util.List; public interface StudentMapper { //查询所有学生信息 public List<Student> getStudent1(); public List<Student> getStudent2(); }
StudentMapper.xml
<?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"> <!--namespace=绑定一个对应的Dao/Mapper接口--> <mapper namespace="dao.StudentMapper"> <!--第一种方法--> <resultMap id="ST1" type="Student"> <result property="id" column="id"/> <result property="name" column="name"/> <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/> </resultMap> <select id="getStudent1" resultMap="ST1"> select * from student </select> <select id="getTeacher" resultType="Teacher"> select * from teacher where id = #{id} </select> <!--===============================--> <!--第二种方法--> <resultMap id="ST2" type="Student"> <result property="id" column="sid"/> <result property="name" column="sname"/> <association property="teacher" javaType="Teacher"> <result property="name" column="tname"/> </association> </resultMap> <select id="getStudent2" resultMap="ST2"> select s.id sid,s.name sname,t.name tname from student s,teacher t where s.tid=t.id </select> </mapper>
Student.java
package pojo; import lombok.Data; @Data public class Student { int id; String name; Teacher teacher; }
Teacher.java
package pojo; import lombok.Data; @Data public class Teacher { int id; String name; }
MyTest.java
package dao; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import pojo.Student; import pojo.Teacher; import utils.MybatisUtils; import java.util.List; public class MyTest { @Test public void test() { SqlSession sqlSession= MybatisUtils.getSqlSession(); TeacherMapper teacherMapper=sqlSession.getMapper(TeacherMapper.class); Teacher teacher = teacherMapper.getTeacher(1); System.out.println(teacher.getName()); sqlSession.close(); } @Test public void getStudent1() { SqlSession sqlSession=MybatisUtils.getSqlSession(); StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class); List<Student> studentList=studentMapper.getStudent1(); for (Student student : studentList) { System.out.println(student); } } @Test public void getStudent2() { SqlSession sqlSession=MybatisUtils.getSqlSession(); StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class); List<Student> studentList=studentMapper.getStudent2(); for (Student student : studentList) { System.out.println(student); } } }
每添加一个接口类都要在核心配置文件mybatis-config.xml中绑定接口,最好使用typeAliases简化代码
总体感觉来说还是第二中多对一比较好理解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2020-04-19 开发冲刺二