关联映射无非三种:
一对一,一对多,多对多。
在深入学习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类:
扫描二维码关注公众号,回复:
5566554 查看本文章
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
项目结构:
实验结果: