新建person和idcard表
一个用户对应一个身份信息实现一对一查询
Sql建表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for idcard
-- ----------------------------
DROP TABLE IF EXISTS `idcard`;
CREATE TABLE `idcard` (
`c_id` int(11) NOT NULL AUTO_INCREMENT,
`c_cardno` varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`c_uselife` date DEFAULT NULL,
`c_person_id` int(11) NOT NULL,
PRIMARY KEY (`c_id`) USING BTREE,
UNIQUE INDEX `c_cardno`(`c_cardno`) USING BTREE,
INDEX `c_person_id`(`c_person_id`) USING BTREE,
CONSTRAINT `idcard_ibfk_1` FOREIGN KEY (`c_person_id`) REFERENCES `person` (`p_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of idcard
-- ----------------------------
INSERT INTO `idcard` VALUES (1, '110112199012127821', '2029-10-10', 1);
INSERT INTO `idcard` VALUES (2, '120114199911103491', '2030-12-01', 2);
-- ----------------------------
-- Table structure for person
-- ----------------------------
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
`p_id` int(11) NOT NULL AUTO_INCREMENT,
`p_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`p_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of person
-- ----------------------------
INSERT INTO `person` VALUES (1, '张三');
INSERT INTO `person` VALUES (2, '李四');
SET FOREIGN_KEY_CHECKS = 1;
pom依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
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="development">
<!-- 开发环境 -->
<environment id="development">
<!-- 事务管理器 -->
<transactionManager type="JDBC"/>
<!-- 数据源:驱动、连接、用户名、密码 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/person?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
<!-- 配置映射文件:SQL语句所在位置 -->
<mappers>
<package name="com.springbmybtis.mapper"/>
</mappers>
</configuration>
实体类
idcard实体类
public class IdCard {
private int id;
private String cardno;
private Date useLife;
private int personId;
public IdCard() {
}
public IdCard(int id, String cardno, Date useLife, int personId) {
this.id = id;
this.cardno = cardno;
this.useLife = useLife;
this.personId = personId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCardno() {
return cardno;
}
public void setCardno(String cardno) {
this.cardno = cardno;
}
public Date getUseLife() {
return useLife;
}
public void setUseLife(Date useLife) {
this.useLife = useLife;
}
public int getPersonId() {
return personId;
}
public void setPersonId(int personId) {
this.personId = personId;
}
@Override
public String toString() {
return "IdCard{" +
"id=" + id +
", cardno='" + cardno + '\'' +
", useLife=" + useLife +
", personId=" + personId +
'}';
}
}
person实体类
public class Person {
private int id;
private String name;
private IdCard idCard;
public Person() {
}
public Person(int id, String name, IdCard idCard) {
this.id = id;
this.name = name;
this.idCard = idCard;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IdCard getIdCard() {
return idCard;
}
public void setIdCard(IdCard idCard) {
this.idCard = idCard;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", idCard=" + idCard +
'}';
}
}
Mapper接口
idcardMapper
public interface idCardMapper {
}
personMapper
public interface personMapper {
Person queryById(int id);
}
Mapper.Xml
idcarMapper.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">
<!-- namespace:命名空间,隔离SQL -->
<mapper namespace="com.springbmybtis.mapper.idCardMapper">
<!--
id:SQL语句名称,具有唯一性
resultType:返回结果类型 实体类全限定名
parameterType:输入参数类型 int Integer
-->
<resultMap id="idCardMap" type="com.springbmybtis.dao.IdCard">
<id column="c_id" property="id"></id>
<result column="c_cardno" property="cardno"></result>
<result column="c_uselife" property="useLife"></result>
<result column="c_persn_id" property="personId"></result>
</resultMap>
</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">
<!-- namespace:命名空间,隔离SQL -->
<mapper namespace="com.springbmybtis.mapper.personMapper">
<!--
id:SQL语句名称,具有唯一性
resultType:返回结果类型 实体类全限定名
parameterType:输入参数类型 int Integer
-->
<resultMap id="PersonRe" type="com.springbmybtis.dao.Person">
<id column="p_id" property="id"></id>
<result column="p_name" property="name"></result>
<!-- 内联方式-->
<!-- <association property="idCardMapper" javaType="com.springbmybtis.dao.IdCard">-->
<!-- <id column="c_id" property="id"></id>-->
<!-- <result column="c_cardno" property="cardno"></result>-->
<!-- <result column="c_uselife" property="useLife"></result>-->
<!-- <result column="c_persn_id" property="personId"></result>-->
<!-- </association>-->
<!-- 外联方式-->
<association property="idCard" javaType="com.springbmybtis.dao.IdCard"
resultMap="com.springbmybtis.mapper.idCardMapper.idCardMap">
</association>
</resultMap>
<select id="queryById" parameterType="int" resultMap="PersonRe">
select p.*,c.* from person p,idcard c where p.p_id=c.c_person_id and p.p_id=#{id};
</select>
</mapper>
编写测试类
public class SpringmybtiasApplicationTests {
@Test
public void contextLoads() throws IOException {
InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
personMapper mapper = sqlSession.getMapper(personMapper.class);
Person person = mapper.queryById(1);
System.out.println(person);
sqlSession.close();
}
}
查询结果
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Person{id=1, name='张三', idCard=IdCard{id=1, cardno='110112199012127821', useLife=Wed Oct 10 00:00:00 CST 2029, personId=0}}
Process finished with exit code 0
新手入坑,如有不足,欢迎各位大佬指教!!!