java mybatis框架實(shí)現(xiàn)多表關(guān)系查詢功能
基于Maven框架的整體設(shè)計(jì) —— 一多一的關(guān)系

思路:導(dǎo)入mybatis、mysql、Junit4.13依賴;
編寫(xiě)兩個(gè)java實(shí)體類;
編寫(xiě)sqMapConfig.xml mybatis核心配置文件
編寫(xiě)dao層接口;
編寫(xiě)mapper 映射文件;
編寫(xiě)測(cè)試類。
1.導(dǎo)入相關(guān)依賴
<!--配置依賴-->
<dependencies>
<!--配置mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--配合mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--配置單元測(cè)試-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
</dependencies>
2.編寫(xiě)兩個(gè)java實(shí)體類;
Students
package com.mybatis.pojo;
public class Students {
private Integer sid;
private String sName;
private Integer sCid;
private Cards cards; // 一多一的關(guān)系
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getsName() {
return sName;
}
public void setsName(String sName) {
this.sName = sName;
}
public Integer getsCid() {
return sCid;
}
public void setsCid(Integer sCid) {
this.sCid = sCid;
}
public Cards getCards() {
return cards;
}
public void setCards(Cards cards) {
this.cards = cards;
}
@Override
public String toString() {
return "Students{" +
"sid=" + sid +
", sName='" + sName + '\'' +
", sCid=" + sCid +
", cards=" + cards +
'}';
}
}
Cards
package com.mybatis.pojo;
public class Cards {
private Integer cid;
private String cnum;
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCnum() {
return cnum;
}
public void setCnum(String cnum) {
this.cnum = cnum;
}
@Override
public String toString() {
return "Cards{" +
"cid=" + cid +
", cnum='" + cnum + '\'' +
'}';
}
}
3.編寫(xiě)sqMapConfig.xml mybatis核心配置文件
<?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>
<!--
配置外部文件properties文件
-->
<properties resource="jdbc.properties"></properties>
<!--配置實(shí)體類相對(duì)路徑 別名-->
<typeAliases>
<typeAlias type="com.mybatis.pojo.Students" alias="Stu"></typeAlias>
<typeAlias type="com.mybatis.pojo.Cards" alias="Car"></typeAlias>
</typeAliases>
<!--配置mybatis環(huán)境-->
<environments default="mybatis">
<environment id="mybatis">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="pooled">
<property name="driver" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</dataSource>
</environment>
</environments>
<!--
配置mapper.xml映射文件
resource:相對(duì)路徑
-->
<mappers>
<mapper resource="com.mybatis.dao/studentsDao.xml"></mapper>
<mapper resource="com.mybatis.dao/CardsDao.xml"></mapper>
<!--<package name="com.mybatis.dao"></package>-->
</mappers>
</configuration>
4.編寫(xiě)dao層接口;
package com.mybatis.dao;
import com.mybatis.pojo.Students;
import java.util.List;
public interface StudentsDao {
// 查詢學(xué)生信息以及對(duì)應(yīng)的身份證信息
public List<Students> findAll();
}
還有一個(gè)略了;
5.編寫(xiě)mapper 映射文件;
StudentsDao.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 值是dao層對(duì)應(yīng)的接口-->
<mapper namespace="com.mybatis.dao.StudentsDao">
<!--
配置實(shí)體類字段與數(shù)據(jù)庫(kù)字段一致
-->
<resultMap id="stuMap" type="Stu">
<id property="sid" column="sid"></id>
<result property="sName" column="sname"></result>
<result property="sCid" column="scid"></result>
<association property="cards" resultMap="com.mybatis.dao.CardsDao.cardsMap"></association>
</resultMap>
<!--
查詢學(xué)生信息以及對(duì)應(yīng)的身份證信息
resultMap:實(shí)體類與數(shù)據(jù)庫(kù)映射的數(shù)據(jù)類型
-->
<select id="findAll" resultMap="stuMap">
select s.sname,c.cnum from students s,cards c where s.scid=c.cid;
</select>
</mapper>
CardsDao.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 值是dao層對(duì)應(yīng)接口的權(quán)限定名-->
<mapper namespace="com.mybatis.dao.CardsDao">
<!--配置實(shí)體類字段與數(shù)據(jù)庫(kù)一致-->
<resultMap id="cardsMap" type="car">
<!--
property:實(shí)體字段
column:數(shù)據(jù)庫(kù)字段
-->
<id property="cid" column="cid"></id>
<result property="cnum" column="cnum"></result>
</resultMap>
</mapper>
6.編寫(xiě)測(cè)試類
import com.mybatis.dao.StudentsDao;
import com.mybatis.pojo.Students;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestMybatis {
InputStream resource;
SqlSession session;
StudentsDao stuDao;
@Before // 在test方法之前執(zhí)行
public void init() throws IOException {
// 加載核心配置文件
resource = Resources.getResourceAsStream("sqMapConfig.xml");
// 創(chuàng)建sqlSessionFactoryBuilder對(duì)象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 創(chuàng)建sqlSessionFactory對(duì)象
SqlSessionFactory build = builder.build(resource);
// 創(chuàng)建Session對(duì)象
session = build.openSession();
// 執(zhí)行方法
stuDao = session.getMapper(StudentsDao.class);
}
@After // 在test方法之后執(zhí)行
public void close() throws IOException {
// 關(guān)閉資源
session.close();
resource.close();
}
@Test
public void test01(){
List<Students> list = stuDao.findAll();
for (Students students : list) {
System.out.println(students);
}
}
}
到此這篇關(guān)于java mybatis框架實(shí)現(xiàn)多表關(guān)系查詢的文章就介紹到這了,更多相關(guān)java mybatis多表關(guān)系查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談HBase在SpringBoot項(xiàng)目里的應(yīng)用(含HBaseUtil工具類)
這篇文章主要介紹了淺談HBase在SpringBoot項(xiàng)目里的應(yīng)用(含HBaseUtil工具類),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
Hibernate延遲加載原理與實(shí)現(xiàn)方法
這篇文章主要介紹了Hibernate延遲加載原理與實(shí)現(xiàn)方法,較為詳細(xì)的分析了Hibernate延遲加載的概念,原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03
MyBatis自定義類型轉(zhuǎn)換器實(shí)現(xiàn)加解密
這篇文章主要介紹了MyBatis自定義類型轉(zhuǎn)換器實(shí)現(xiàn)加解密的相關(guān)資料,需要的朋友可以參考下2016-07-07

