Mybatis一对一关系映射

简介: 一对一最典型的数据库关系就是用户和身份证了。 书中就是以这个例子来作为实现的。

一对一最典型的数据库关系就是用户和身份证了。

书中就是以这个例子来作为实现的。


数据库建库:



CREATE TABLE tb_card (
  id INT PRIMARY KEY AUTO_INCREMENT,
  CODE VARCHAR(18)
);
INSERT INTO tb_card (CODE) VALUES('62134219781203198');
INSERT INTO tb_card (CODE) VALUES('62134219741203198');
INSERT INTO tb_card (CODE) VALUES('62134219981203198');

CREATE TABLE tb_person (
  id INT PRIMARY KEY AUTO_INCREMENT,
  NAME VARCHAR(18),
  SEX VARCHAR(18),
  AGE INT,
  CARD_ID INT UNIQUE,
  FOREIGN KEY (CARD_ID) REFERENCES tb_card (id)
);
INSERT INTO tb_person (NAME, SEX, AGE, CARD_ID) VALUES ('jack', 'M', 23, 1);
INSERT INTO tb_person (NAME, SEX, AGE, CARD_ID) VALUES ('tom', 'F', 21, 2);
INSERT INTO tb_person (NAME, SEX, AGE, CARD_ID) VALUES ('john', 'M', 25, 3);

mybatis-config.xml


<?xm	l 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>
	<settings>
		<setting name="logImpl" value="LOG4J" />
	</settings>
	<typeAliases>
		<typeAlias alias="user" type="org.fkit.domain.User"/>
	</typeAliases>
	<environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://IP/DB" />
				<property name="username" value="xxx" />
				<property name="password" value="xxx" />
			</dataSource>
		</environment>
	
	</environments>
	
	<mappers>
		<mapper resource="org/fkit/mapper/UserMapper.xml" />
		<mapper resource="org/fkit/mapper/PersonMapper.xml" />
		<mapper resource="org/fkit/mapper/CardMapper.xml" />
	</mappers>
</configuration>

log4j.properties


log4j.rootLogger=ERROR, stdout

log4j.logger.org.fkit.mapper.UserMapper=DEBUG

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

Card.java


package org.fkit.domain;

public class Card {
	private Integer id;
	private String code;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	@Override
	public String toString() {
		return "Card [id=" + id + ", code=" + code + "]";
	}
	
	

}

Person.java


package org.fkit.domain;

public class Person {
	private Integer id;
	private String name;
	private String sex;
	private Integer age;
	private Card card;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Card getCard() {
		return card;
	}
	public void setCard(Card card) {
		this.card = card;
	}
	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + ", card=" + card + "]";
	}
	
	

}


FKSqlSessionFactory.java


package org.fkit.factory;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class FKSqlSessionFactory {
	private static SqlSessionFactory sqlSessionFactory = null;
	
	static {
		try {
			InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static SqlSession getSqlSession() {
		return sqlSessionFactory.openSession();
	}
	public static SqlSessionFactory getSqlSessionFactory() {
		return sqlSessionFactory;
	}

}

CardMapper.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="org.fkit.mapper.CardMapper">
	<select id="selectCardById" parameterType="int" resultType="org.fkit.domain.Card">
		SELECT * FROM tb_card WHERE id = #{id}
	</select>
</mapper>

PersonMapper.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="org.fkit.mapper.PersonMapper">
	<select id="selectPersonById" parameterType="int"
		resultMap="personMapper">
		SELECT * FROM tb_person WHERE id = #{id}	
	</select>
	<resultMap type="org.fkit.domain.Person" id="personMapper">
		<id property="id" column="id" />
		<result property="name" column="name" />
		<result property="sex" column="sex" />
		<result property="age" column="age" />
		<association property="card" column="card_id"
			select="org.fkit.mapper.CardMapper.selectCardById"
			javaType="org.fkit.domain.Card" />
	</resultMap>
</mapper>

PersonMapper.java


package org.fkit.mapper;

import org.fkit.domain.Person;

public interface PersonMapper {
	Person selectPersonById(Integer id);

}

MyBatisTest.java


package org.fkit.tst;


import org.apache.ibatis.session.SqlSession;

import org.fkit.domain.Person;


import org.fkit.factory.FKSqlSessionFactory;
import org.fkit.mapper.PersonMapper;

public class MyBatisTest {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		SqlSession session = FKSqlSessionFactory.getSqlSession();
		
		
		PersonMapper pm = session.getMapper(PersonMapper.class);
		Person p = pm.selectPersonById(1);
		System.out.println(p);
		System.out.println(p.getCard());
		session.commit();
		session.close();

	}

}

48c0d106f513181d1f912d796a32fa347efda8b8
目录
相关文章
|
24天前
|
XML Oracle Java
mybatis反向生成实体类、dao层以及映射文件
mybatis反向生成实体类、dao层以及映射文件
13 1
|
1月前
|
SQL Java 数据库连接
|
2月前
|
Java 数据库连接 Maven
使用mybatis插件generator生成实体类,dao层和mapper映射
使用mybatis插件generator生成实体类,dao层和mapper映射
47 0
|
3月前
|
SQL Java 数据库连接
MyBatis映射文件深入
MyBatis映射文件深入
61 0
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
197 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
1月前
|
XML Java 数据库连接
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
47 0
|
4月前
|
XML Java 数据库连接
MyBatis--映射关系一对一和MyBatis--映射关系多对一 -都有基于xml和注解的教程
MyBatis--映射关系一对一和MyBatis--映射关系多对一 -都有基于xml和注解的教程
90 0
|
24天前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
14 1
|
29天前
|
Java 数据库连接 网络安全
mybatis使用全注解的方式案例(包含一对多关系映射)
mybatis使用全注解的方式案例(包含一对多关系映射)
12 0
|
1月前
|
XML Java 数据库连接
【Mybatis】XML映射文件
【Mybatis】XML映射文件
24 0