Mybatis实现多对多映射的查询
来源:互联网 发布:java 连续登录天数 编辑:程序博客网 时间:2024/05/21 14:59
Configuration.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <typeAliases> <typeAlias type="com.zmj.web.entity.Course" alias="Course"/> <typeAlias type="com.zmj.web.entity.User" alias="User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="jdbc"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/user"/> <property name="username" value="root"/> <property name="password" value="1234"/> </dataSource> </environment> </environments> <!--映射文件 --> <mappers> <mapper resource="com/zmj/web/entity/Course.xml"/> <mapper resource="com/zmj/web/entity/User.xml"/> </mappers></configuration>
两个实体类:
User.java
public class User { public int userId; public String userName; public List<Course> course; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public List<Course> getCourse() { return course; } public void setCourse(List<Course> course) { this.course = course; } public User() { super(); }}Course.javapublic class Course { public int courseId; public String courseName; public User user; public int getCourseId() { return courseId; } public void setCourseId(int courseId) { this.courseId = courseId; } public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this.courseName = courseName; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Course() { super(); }}
Course.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"><mapper namespace="com.zmj.web.dao.UserDao"> <resultMap type="Course" id="courseMap"> <id property="courseId" column="c_id" /> <result property="courseName" column="c_name" /> </resultMap> <resultMap type="Course" id="courseUserMap" extends="courseMap"> <collection property="course" ofType="Course"> <id property="userId" column="u_id" /> <result property="userName" column="u_name" /> </collection> </resultMap></mapper>
User.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"><mapper namespace="com.zmj.web.dao.UserDao"> <resultMap type="User" id="userMap"> <id property="userId" column="u_id"/> <result property="userName" column="u_name"/> </resultMap> <resultMap type="User" id="userCourseMap" extends="userMap"> <collection property="course" ofType="Course"> <id property="courseId" column="c_id"/> <result property="courseName" column="c_name"/> </collection> </resultMap> <select id="selectCourseByuserId" parameterType="int" resultMap="userCourseMap"> select * from user_course as uc left join usertable as u on uc.u_id=u.u_id left join coursetable as c on c.c_id = uc.c_id where u.u_id-#{userId} </select></mapper>
接口类UserDao.java
public interface UserDao { List<User> selectCourseByuserId(int userId);}
测试类:
public class Main { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; static{ try { reader = Resources.getResourceAsReader("Configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { try { SqlSession session = sqlSessionFactory.openSession(); UserDao dao = session.getMapper(UserDao.class); List<User> list = dao.selectCourseByuserId(1); for (User user : list) { System.out.println(user.getUserName()); for (Course course : user.getCourse()) { System.out.println(course.getCourseName()); } } } catch (Exception e) { e.printStackTrace(); } }}
数据库表需要三张(如下图):
0 0
- Mybatis实现多对多映射的查询
- MyBatis中多对多关系的映射和查询
- MyBatis中多对多关系的映射和查询
- MyBatis中多对多关系的映射和查询
- Mybatis高级映射多对多查询
- 【Mybatis】---高级映射之一对多查询
- 【Mybatis】---高级映射之多对多查询
- mybatis之一对多映射查询(十一)
- mybatis之多对多映射查询(十二)
- MyBatis高级映射之一对多查询
- MyBatis高级映射之多对多查询
- 【MyBatis框架】高级映射-多对多查询
- mybatis高级映射多对多查询(二)
- 【mybatis基础】高级映射:多对多查询
- 【MyBatis框架】高级映射-多对多查询
- MyBatis高级映射(多对多查询)
- mybatis高级输出映射(多对多查询)
- mybatis学习之高级映射中的多对多查询
- Swift中的条件操作和循环
- C++STL基本了解
- java设计模式——原型模式
- 字符编码与字符集的区别
- OC__part11.3
- Mybatis实现多对多映射的查询
- 数组的最小值
- Fast-forward合并和普通合并
- 2016.10.15【初中部 NOIP提高组 】模拟赛C
- 初识嵌入式
- 总结28
- SpringMVC常用注解
- 消息队列的相关知识
- Java和PHP在Web开发方面的比较