级联查询
-
一对多
Student.java:
package com.xiaoxin.entity; import lombok.Data; @Data public class Student { private long id; private String name; private Classes classes; }
Classes.java:
package com.xiaoxin.entity; import java.util.List; import lombok.Data; @Data public class Classes { private long id; private String name; private List<Student> students; }
StudentRepository.java:
package com.xiaoxin.repository; import com.xiaoxin.entity.Student; public interface StudentRepository { public Student findById(long id); }
StudentRepository.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.xiaoxin.repository.StudentRepository"> <resultMap id="StudentMap" type="com.xiaoxin.entity.Student"> <id column="id" property="id"/> <result column="name" property="name"/> <association property="classes" javaType="com.xiaoxin.entity.Classes"> <id column="cid" property="id"/> <result column="cname" property="name"/> </association> </resultMap> <select id="findById" parameterType="long" resultMap="StudentMap"> select s.id, s.name, c.id cid, c.name cname from student s, classes c where s.cid = c.id and s.id=#{id} </select> </mapper>
config.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> <environments default="mydev"> <environment id="mydev"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/xiaoxin/mapper/AccountMapper.xml"/> <mapper resource="com/xiaoxin/repository/AccountRepository.xml"/> <mapper resource="com/xiaoxin/repository/StudentRepository.xml"/> </mappers> </configuration>
ClassRepository.java:
package com.xiaoxin.repository; import com.xiaoxin.entity.Classes; public interface ClassesRepository { public Classes findById(long id); }
ClassesRepository.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.xiaoxin.repository.ClassesRepository"> <resultMap id="ClassesMap" type="com.xiaoxin.entity.Classes"> <id column="cid" property="id"/> <result column="cname" property="name"/> <collection property="students" ofType="com.xiaoxin.entity.Student"> <id column="id" property="id"/> <result column="name" property="name"/> </collection> </resultMap> <select id="findById" parameterType="long" resultMap="ClassesMap"> select c.id as cid, c.name as cname, s.id, s.name from student s, classes c where c.id = s.cid and c.id = #{id} </select> </mapper>
config.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> <environments default="mydev"> <environment id="mydev"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/xiaoxin/mapper/AccountMapper.xml"/> <mapper resource="com/xiaoxin/repository/AccountRepository.xml"/> <mapper resource="com/xiaoxin/repository/StudentRepository.xml"/> <mapper resource="com/xiaoxin/repository/ClassesRepository.xml"/> </mappers> </configuration>
-
多对多
Customer:
package com.xiaoxin.entity; import lombok.Data; import java.util.List; @Data public class Customer { private long id; private String name; private List<Goods> goodsList; }
CustomerRepository:
package com.xiaoxin.repository; import com.xiaoxin.entity.Customer; public interface CustomerRepository { public Customer findById(long id); }
CustomerRepository.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.xiaoxin.repository.CustomerRepository"> <resultMap id="CustomerMap" type="com.xiaoxin.entity.Customer"> <id column="cid" property="id"/> <result column="cname" property="name"/> <collection property="goodsList" ofType="com.xiaoxin.entity.Goods"> <id column="gid" property="id"/> <result column="gname" property="name"/> </collection> </resultMap> <select id="findById" parameterType="long" resultMap="CustomerMap"> select c.id cid, c.name cname, g.id gid, g.name gname from customer c, goods g, customer_goods cg where c.id=cg.cid and g.id=cg.id and c.id=#{id} </select> </mapper>