【Mybatis】一对多实例

阅读: 评论:0

【Mybatis】一对多实例

【Mybatis】一对多实例

①创建数据库和表,数据库为mytest,表为teacher和student

 1 DROP TABLE IF EXISTS teacher;
 2 DROP TABLE IF EXISTS student;
 3 
 4 CREATE TABLE teacher(
 5     teacher_id INT PRIMARY KEY auto_increment NOT NULL,
 6     teacher_name VARCHAR(20)
 7 );
 8 
 9 CREATE TABLE student(
10     student_id INT PRIMARY KEY auto_increment NOT NULL,
11     student_name VARCHAR(20),
12     teacher_id INT
13 );
14 
15 ALTER TABLE student ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(teacher_id);
16 
17 INSERT INTO teacher(teacher_name) VALUES ("张三丰");
18 INSERT INTO teacher(teacher_name) VALUES ("王重阳");
19 INSERT INTO student(student_name, teacher_id) VALUES ("宋远桥", 1);
20 INSERT INTO student(student_name, teacher_id) VALUES ("俞莲舟", 1);
21 INSERT INTO student(student_name, teacher_id) VALUES ("俞岱岩", 1);
22 INSERT INTO student(student_name, teacher_id) VALUES ("张松溪", 1);
23 INSERT INTO student(student_name, teacher_id) VALUES ("张翠山", 1);
24 INSERT INTO student(student_name, teacher_id) VALUES ("殷梨亭", 1);
25 INSERT INTO student(student_name, teacher_id) VALUES ("莫声谷", 1);
26 
27 INSERT INTO student(student_name, teacher_id) VALUES ("丹阳子马钰", 2);
28 INSERT INTO student(student_name, teacher_id) VALUES ("长真子谭处端", 2);
29 INSERT INTO student(student_name, teacher_id) VALUES ("长生子刘处玄", 2);
30 INSERT INTO student(student_name, teacher_id) VALUES ("长春子丘处机", 2);
31 INSERT INTO student(student_name, teacher_id) VALUES ("玉阳子王处一", 2);
32 INSERT INTO student(student_name, teacher_id) VALUES ("广宁子郝大通", 2);
33 INSERT INTO student(student_name, teacher_id) VALUES ("清静散人孙不二", 2);

②创建Java工程,导入相应的jar包

③创建配置文件l和数据库配置文件db.properties

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis//DTD Config 3.0//EN" 
 3     ".dtd">
 4     
 5 <configuration>
 6     <properties resource="db.properties"></properties>
 7     <environments default="development">
 8         <environment id="development">
 9             <transactionManager type="JDBC"></transactionManager>
10             <dataSource type="POOLED">
11                 <property name="driver" value="${driver}"/>
12                 <property name="url" value="${url}"/>
13                 <property name="username" value="${name}"/>
14                 <property name="password" value="${password}"/>
15             </dataSource>
16         </environment>
17     </environments>
18     
19     <mappers>
20         <mapper resource="org/mybatis/l"/>
21         <mapper resource="org/mybatis/l"/>
22     </mappers>
23 </configuration>
1 driver = sql.jdbc.Driver
2 url = jdbc:mysql://localhost:3306/mytest
3 name = root
4 password = root

④创建实体类Teacher和Student

 

 1 batis.domain;
 2 
 3 import java.util.List;
 4 
 5 public class Teacher {
 6 
 7     private int teacher_id;
 8     private String teacher_name;
 9     private List<Student> students;
10     
11     public int getTeacher_id() {
12         return teacher_id;
13     }
14 
15     public void setTeacher_id(int teacher_id) {
16         acher_id = teacher_id;
17     }
18 
19     public String getTeacher_name() {
20         return teacher_name;
21     }
22 
23     public void setTeacher_name(String teacher_name) {
24         acher_name = teacher_name;
25     }
26 
27     public List<Student> getStudents() {
28         return students;
29     }
30 
31     public void setStudents(List<Student> students) {
32         this.students = students;
33     }
34 
35     @Override
36     public String toString() {
37         return "[Teacher = teacher_id:" + teacher_id + ", teacher_name:" + teacher_name 
38                 + ", the number of students:" + students.size() + "]";
39     }
40     
41     
42 }

 

 1 batis.domain;
 2 
 3 public class Student {
 4 
 5     private int student_id;
 6     private String student_name;
 7     private Teacher teacher;
 8     
 9     public int getStudent_id() {
10         return student_id;
11     }
12 
13     public void setStudent_id(int student_id) {
14         this.student_id = student_id;
15     }
16 
17     public String getStudent_name() {
18         return student_name;
19     }
20 
21     public void setStudent_name(String student_name) {
22         this.student_name = student_name;
23     }
24 
25     public Teacher getTeacher() {
26         return teacher;
27     }
28 
29     public void setTeacher(Teacher teacher) {
30         acher = teacher;
31     }
32 
33     @Override
34     public String toString() {
35         return "[Student = student_id:" + student_id + ", student_name:" + student_name + 
36                 ", teacher:" + Teacher_name() + "]";
37     }
38     
39     
40 }

⑤创建sql映射文件l和l

注意比较两者的区别

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis//DTD Mapper 3.0//EN" 
 3     ".dtd">
 4     
 5 <mapper namespace=&#batis.mapping.studentMapper">
 6     <select id="getStudent" resultMap="getStudentMap">
 7         select * from teacher t, student s acher_id&#acher_id acher_id=#{id}
 8     </select>
 9     
10     <resultMap type=&#batis.domain.Student" id="getStudentMap">
11         <id column="student_id" property="student_id" />
12         <result column="student_name" property="student_name" />
13         <association property="teacher" javaType=&#batis.domain.Teacher">
14             <id column="teacher_id" property="teacher_id"/>
15             <result column="teacher_name" property="teacher_name"/>
16         </association>
17     </resultMap>
18 </mapper>
l
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis//DTD Mapper 3.0//EN" 
 3     ".dtd">
 4     
 5 <mapper namespace=&#acherMapper">
 6     <select id="getTeacher" resultMap="getTeacherMap">
 7         select * from teacher t, student s acher_id&#acher_id acher_id=#{id}
 8     </select>
 9     
10     <resultMap type=&#batis.domain.Teacher" id="getTeacherMap">
11         <id column="teacher_id" property="teacher_id" />
12         <result column="teacher_name" property="teacher_name" />
13         <collection property="students" ofType=&#batis.domain.Student">
14             <id column="student_id" property="student_id"/>
15             <result column="student_name" property="student_name"/>
16         </collection>
17     </resultMap>
18 </mapper>
l

⑥向配置文件中注册 l和l 文件【已添加,查看第③步】

⑦测试类

 1 batis.app;
 2 
 3 import java.io.InputStream;
 4 import java.util.List;
 5 
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 import org.junit.Before;
10 import org.junit.Test;
11 batis.domain.Student;
12 batis.domain.Teacher;
13 
14 public class TestOneToMany {
15 
16     SqlSession session;
17     
18     @Before
19     public void beforeLoad() {
20         InputStream inputStream = 
21                 ClassLoader().getResourceAsStream(&#l");
22         SqlSessionFactory sqlSessionFactory = 
23                 new SqlSessionFactoryBuilder().build(inputStream);
24         session = sqlSessionFactory.openSession();
25     }
26     
27     @Test
28     public void testGetStudents() {
29         String statement = &#batis.Student";
30         List<Student> studentList = session.selectList(statement, 1);
31         for(Student s : studentList) {
32             System.out.Student_name() + "的师傅是:" + s.getTeacher().getTeacher_name());
33         }
34         
35         session.close();
36     }
37     
38     @Test
39     public void testGetTeacher() {
40         String statement = &#Teacher";
41         Teacher t = session.selectOne(statement, 1);
42         System.out.Teacher_name() + "有" + t.getStudents().size() + "个徒弟");
43         session.close();
44     }
45     
46 }

⑧结构图

 

转载于:.html

本文发布于:2024-01-30 18:54:40,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170661208422120.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实例   Mybatis
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23