mybatis連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)雙表查詢(xún)
創(chuàng)建maven工程包
再點(diǎn)擊下一步
自己定義項(xiàng)目名稱(chēng),在下一步
設(shè)置自己本地倉(cāng)庫(kù)位置
最后點(diǎn)擊完成。
建好后在pom.xml文件中添加mybatis以及相關(guān)架包
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <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.38</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> </dependency> </dependencies>
這些架包可以從Maven Repository: Search/Browse/Explore (mvnrepository.com)獲取.
接著連接數(shù)據(jù)庫(kù)表的接口
import java.util.List; public interface OrdersDAO { public List<Orders> findOrderByUserid(long userid); public void batchInsertOrder(List<Orders> ord); }
public interface UserinfosDAO { public List<Userinfos>findTop10(); public List<Userinfos>findUser(Userinfos user); }
以及實(shí)用類(lèi)
import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor @Builder public class Userinfos { private long userid; private String username; private Date birthday; private String pwd; private List<Orders> ords; }
import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor @Builder public class Userinfos { private long userid; private String username; private Date birthday; private String pwd; private List<Orders> ords; }
以及配置文件order.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="com.kgc.mymb.dao.OrdersDAO"> <!-- resulMap--> <!-- 動(dòng)態(tài)sql--> <select id="findOrderByUserid" parameterType="long" resultType="order"> select * from orders where userid=#{userid} </select> <insert id="batchInsertOrder"> insert into orders values <foreach collection="list" item="order" separator=","> (#{order.ordid},#{order.userid},#{order.shopid},#{order.buynum}) </foreach> </insert> </mapper>
和userinfos.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="com.kgc.mymb.dao.UserinfosDAO"> <!-- 動(dòng)態(tài)sql--> <select id="findUser" parameterType="user" resultType="user"> select* from userinfos <where> <if test="username != null"> username=#{username} </if> <if test="birthday != null"> and date_format(birthday,'%Y-%m-%d')=date_format(#{birthday},'%Y-%m-%d') </if> </where> </select> <!-- resulMap 關(guān)聯(lián)性查詢(xún)--> <resultMap id="user_order" type="user"> <!-- collection 一對(duì)多 property 查詢(xún)出訂單的結(jié)果放在哪個(gè)屬性中 column 用什么列傳遞給訂單做參數(shù) select 訂單查詢(xún)方法 --> <result column="userid" property="userid"></result> <collection property="ords" column="userid" select="com.kgc.mymb.dao.OrdersDAO.findOrderByUserid"> </collection> </resultMap> <select id="findTop10" resultMap="user_order"> select * from userinfos limit 10 </select> </mapper>
數(shù)據(jù)庫(kù)鏈接文件mybatis.cfg.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> <!-- 給自己的實(shí)體類(lèi)起別名--> <typeAliases> <typeAlias type="com.kgc.mymb.domain.Userinfos" alias="user"></typeAlias> <typeAlias type="com.kgc.mymb.domain.Orders" alias="order"></typeAlias> </typeAliases> <!-- 連接數(shù)據(jù)庫(kù)配置--> <environments default="cm"> <environment id="cm"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://192.168.47.3:3306/mydemo"/> <property name="username" value="root"/> <property name="password" value="ok"/> </dataSource> </environment> </environments> <!-- 加載用戶(hù)的sql xml 文件--> <mappers> <mapper resource="mapper/userinfos.xml"></mapper> <mapper resource="mapper/orders.xml"></mapper> </mappers> </configuration>
最后測(cè)試類(lèi)
public class Demo { public static void main(String[] args) throws IOException { //讀取配置文件 Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml"); // 開(kāi)啟SqlSessionFactory工廠(chǎng) SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader); //將你的dao接口注入到會(huì)話(huà)工廠(chǎng)配置對(duì)象中 // factory.getConfiguration().addMapper(UserinfosDAO.class); //開(kāi)啟SqlSession SqlSession session =factory.openSession(); //獲取接口對(duì)象 // UserinfosDAO udao= session.getMapper(UserinfosDAO.class); // Calendar cal=Calendar.getInstance(); // cal.set(1995,3,22,0,0,0); // Userinfos us = Userinfos.builder().username("dpjbms").birthday(cal.getTime()).build(); // System.out.println(udao.findUser(us)); UserinfosDAO udao= session.getMapper(UserinfosDAO.class); System.out.println( udao.findTop10()); // OrdersDAO ordersDAO = session.getMapper(OrdersDAO.class); // Orders ord1=Orders.builder().ordid(10).userid(1).shopid(100).buynum(5).build(); // Orders ord2=Orders.builder().ordid(11).userid(2).shopid(1).buynum(1).build(); // List<Orders> ords=new ArrayList<>(); // ords.add(ord1); // ords.add(ord2); // ordersDAO.batchInsertOrder(ords); // session.commit(); // OrdersDAO ordersDAO= session.getMapper(OrdersDAO.class); // System.out.println(ordersDAO.findOrderByUserid(1)); //關(guān)閉會(huì)話(huà) session.close(); } }
結(jié)果如圖所示
到此這篇關(guān)于mybatis連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)雙表查詢(xún)的文章就介紹到這了,更多相關(guān)mybatis 雙表查詢(xún)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mybatis-Plus多表關(guān)聯(lián)查詢(xún)的使用案例解析
- MyBatis多表查詢(xún)和注解開(kāi)發(fā)案例詳解
- mybatis-plus多表分頁(yè)查詢(xún)最佳實(shí)現(xiàn)方法(非常簡(jiǎn)單)
- Mybatis-plus實(shí)現(xiàn)join連表查詢(xún)的示例代碼
- MyBatis中ResultMap與多表查詢(xún)的處理方法
- MybatisPlus多表連接查詢(xún)的具體實(shí)現(xiàn)
- mybatis于xml方式和注解方式實(shí)現(xiàn)多表查詢(xún)的操作方法
- mybatis-plus多表查詢(xún)操作方法
- MyBatis?實(shí)現(xiàn)動(dòng)態(tài)排序的多表查詢(xún)
- 深入解析MybatisPlus多表連接查詢(xún)
- Mybatis分頁(yè)查詢(xún)主從表的實(shí)現(xiàn)示例
相關(guān)文章
修改idea的這些啟動(dòng)參數(shù),令你的idea健步如飛
這篇文章主要介紹了修改idea的這些啟動(dòng)參數(shù),令你的idea健步如飛~具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Netty核心功能之?dāng)?shù)據(jù)容器ByteBuf詳解
這篇文章主要為大家介紹了Netty核心功能之?dāng)?shù)據(jù)容器ByteBuf詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10使用JPA+querydsl如何實(shí)現(xiàn)多條件動(dòng)態(tài)查詢(xún)
這篇文章主要介紹了使用JPA+querydsl如何實(shí)現(xiàn)多條件動(dòng)態(tài)查詢(xún),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Intellij Idea中批量導(dǎo)入第三方j(luò)ar包的全過(guò)程
引入jar包一般都是針對(duì)小的java項(xiàng)目,這篇文章主要給大家介紹了關(guān)于Intellij Idea中批量導(dǎo)入第三方j(luò)ar包的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10log4j中l(wèi)ogger標(biāo)簽中additivity屬性的用法說(shuō)明
這篇文章主要介紹了log4j中l(wèi)ogger標(biāo)簽中additivity屬性的用法說(shuō)明,基于很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12SpringBoot 集成 Kettle的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot 集成 Kettle的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01SpringBoot集成消息隊(duì)列的項(xiàng)目實(shí)踐
本文主要介紹了SpringBoot集成消息隊(duì)列的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02Spring MVC文件上傳大小和類(lèi)型限制以及超大文件上傳bug問(wèn)題
這篇文章主要介紹了Spring MVC文件上傳大小和類(lèi)型限制以及超大文件上傳bug問(wèn)題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10