java mybatis框架實(shí)現(xiàn)多表關(guān)系查詢功能
基于Maven框架的整體設(shè)計(jì) —— 一多一的關(guān)系
思路:導(dǎo)入mybatis、mysql、Junit4.13依賴;
編寫兩個(gè)java實(shí)體類;
編寫sqMapConfig.xml mybatis核心配置文件
編寫dao層接口;
編寫mapper 映射文件;
編寫測試類。
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> <!--配置單元測試--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> </dependencies>
2.編寫兩個(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.編寫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í)體類相對路徑 別名--> <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:相對路徑 --> <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.編寫dao層接口;
package com.mybatis.dao; import com.mybatis.pojo.Students; import java.util.List; public interface StudentsDao { // 查詢學(xué)生信息以及對應(yīng)的身份證信息 public List<Students> findAll(); }
還有一個(gè)略了;
5.編寫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層對應(yīng)的接口--> <mapper namespace="com.mybatis.dao.StudentsDao"> <!-- 配置實(shí)體類字段與數(shù)據(jù)庫字段一致 --> <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é)生信息以及對應(yīng)的身份證信息 resultMap:實(shí)體類與數(shù)據(jù)庫映射的數(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層對應(yīng)接口的權(quán)限定名--> <mapper namespace="com.mybatis.dao.CardsDao"> <!--配置實(shí)體類字段與數(shù)據(jù)庫一致--> <resultMap id="cardsMap" type="car"> <!-- property:實(shí)體字段 column:數(shù)據(jù)庫字段 --> <id property="cid" column="cid"></id> <result property="cnum" column="cnum"></result> </resultMap> </mapper>
6.編寫測試類
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對象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); // 創(chuàng)建sqlSessionFactory對象 SqlSessionFactory build = builder.build(resource); // 創(chuàng)建Session對象 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談HBase在SpringBoot項(xiàng)目里的應(yīng)用(含HBaseUtil工具類)
這篇文章主要介紹了淺談HBase在SpringBoot項(xiàng)目里的應(yīng)用(含HBaseUtil工具類),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10Hibernate延遲加載原理與實(shí)現(xiàn)方法
這篇文章主要介紹了Hibernate延遲加載原理與實(shí)現(xiàn)方法,較為詳細(xì)的分析了Hibernate延遲加載的概念,原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03MyBatis自定義類型轉(zhuǎn)換器實(shí)現(xiàn)加解密
這篇文章主要介紹了MyBatis自定義類型轉(zhuǎn)換器實(shí)現(xiàn)加解密的相關(guān)資料,需要的朋友可以參考下2016-07-07