SSM学习08MyBatis关联映射

关联映射无非三种:

  一对一,一对多,多对多。

  在深入学习mybatis中的<resultMap>标签,包含了一个association子元素,这个元素就是用来处理一对一关联关系的。

1.建数据库表:

 1 create table tb_idcard(
 2     id int primary key auto_increment,
 3     code varchar(18)
 4 );
 5 insert into tb_idcard(code)
 6 values('152221198711020624'),('152221198804058713');
 7  
 8 create table tb_person(
 9     id int primary key auto_increment,
10     name varchar(32),
11     age int,
12     sex varchar(8),
13     card_id int unique,
14     foreign key(card_id) references tb_idcard(id)
15 );
16  
17 insert into tb_person(name,age,sex,card_id)
18 values('rose',29,'',1);
19 insert into tb_person(name,age,sex,card_id)
20 values('tom',25,'',2);

2.eclipse新建项目YingSheDemo,导入和mybatis学习用的相同的包

  在src下建立com.zyk.po包,写持久类Person和IdCard类

Person类:

 1 package com.zyk.po;
 2  
 3 public class Person {
 4     private Integer id;
 5     private String name;
 6     private Integer age;
 7     private String sex;
 8     private IdCard card;
 9     public Integer getId() {
10         return id;
11     }
12     public void setId(Integer id) {
13         this.id = id;
14     }
15     public String getName() {
16         return name;
17     }
18     public void setName(String name) {
19         this.name = name;
20     }
21     public Integer getAge() {
22         return age;
23     }
24     public void setAge(Integer age) {
25         this.age = age;
26     }
27     public String getSex() {
28         return sex;
29     }
30     public void setSex(String sex) {
31         this.sex = sex;
32     }
33     public IdCard getCard() {
34         return card;
35     }
36     public void setCard(IdCard card) {
37         this.card = card;
38     }
39     @Override
40     public String toString() {
41         return "Customer [id="+id+",name="+name+",age="+age+",sex="+sex+",Card="+card+"]";
42     }
43  
44 }

IdCard类:

 1 package com.zyk.po;
 2  
 3 public class IdCard {
 4  
 5     private Integer id;
 6     private String code;
 7     public Integer getId() {
 8         return id;
 9     }
10     public void setId(Integer id) {
11         this.id = id;
12     }
13     public String getCode() {
14         return code;
15     }
16     public void setCode(String code) {
17         this.code = code;
18     }
19     @Override
20     public String toString() {
21         return "IdCard [id="+id+",code="+code+"]";
22     }
23 }

3.新建com.zyk.mapper包新建PersonMapper.xml和IdCardMapper.xml

PersonMapper.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper
 3    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <mapper namespace="com.zyk.mapper.PersonMapper">
 6     <select id="findPersonById" parameterType="Integer" resultMap="IdCardWithPersonResult">
 7         select * from tb_person where id=#{id}
 8     </select>
 9     <resultMap type="person" id="IdCardWithPersonResult">
10       <id property="id" column="id"/>
11       <result property="name" column="name"/>
12       <result property="age" column="age"/> 
13       <result property="sex" column="sex"/>  
14       <association property="card" column="card_id" javaType="IdCard"
15           select="com.zyk.mapper.IdCardMapper.findCodeById"></association>  
16     </resultMap>
17 </mapper>

IdCardMapper.xml:

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
3     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <mapper namespace="com.zyk.mapper.IdCardMapper">
5     
6     <select id="findCodeById" parameterType="Integer" resultType="IdCard">
7         select * from tb_idcard where id=#{id};
8     </select>
9 </mapper>

4.在src下新建config.xml文件

config.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3      "http://mybatis.org/dtd/mybatis-3-config.dtd">
 4 <configuration>
 5  
 6     <properties resource="db.properties"/>
 7     <typeAliases>
 8         <package name="com.zyk.po"/>
 9     </typeAliases>
10     <!-- 1.配置环境,默认的环境id为mysql -->
11     <environments default="mysql">
12         <!-- 1.2.配置id为mysql的数据库环境 -->
13         <environment id="mysql">
14             <!-- 使用数据库事务管理 -->
15             <transactionManager type="JDBC"/>
16             <!-- 数据库连接池 -->
17             <dataSource type="POOLED">
18                 <property name="driver" value="com.mysql.jdbc.Driver"/>
19                 <property name="url" value="jdbc:mysql://localhost/mybatis"/>
20                 <property name="username" value="root"/>
21                 <property name="password" value="123456"/>
22             </dataSource>
23         </environment>
24     </environments>
25     <!-- 2.配置Mapper的位置 -->
26     <mappers>
27         <mapper resource="com/zyk/mapper/IdCardMapper.xml"/>
28         <mapper resource="com/zyk/mapper/PersonMapper.xml"/>
29     </mappers>
30 </configuration>

db.properties:

1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/mybatis
3 jdbc.username=root
4 jdbc.password=123456

项目结构:

实验结果:

猜你喜欢

转载自www.cnblogs.com/2312947032zyk/p/10547108.html