mybatis連接數(shù)據(jù)庫實現(xiàn)雙表查詢
創(chuàng)建maven工程包


再點擊下一步

自己定義項目名稱,在下一步

設(shè)置自己本地倉庫位置
最后點擊完成。
建好后在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ù)庫表的接口
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);
}以及實用類
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-->
<!-- 動態(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">
<!-- 動態(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)性查詢-->
<resultMap id="user_order" type="user">
<!-- collection 一對多
property 查詢出訂單的結(jié)果放在哪個屬性中
column 用什么列傳遞給訂單做參數(shù)
select 訂單查詢方法
-->
<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ù)庫鏈接文件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>
<!-- 給自己的實體類起別名-->
<typeAliases>
<typeAlias type="com.kgc.mymb.domain.Userinfos" alias="user"></typeAlias>
<typeAlias type="com.kgc.mymb.domain.Orders" alias="order"></typeAlias>
</typeAliases>
<!-- 連接數(shù)據(jù)庫配置-->
<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>
<!-- 加載用戶的sql xml 文件-->
<mappers>
<mapper resource="mapper/userinfos.xml"></mapper>
<mapper resource="mapper/orders.xml"></mapper>
</mappers>
</configuration>最后測試類
public class Demo {
public static void main(String[] args) throws IOException {
//讀取配置文件
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
// 開啟SqlSessionFactory工廠
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
//將你的dao接口注入到會話工廠配置對象中
// factory.getConfiguration().addMapper(UserinfosDAO.class);
//開啟SqlSession
SqlSession session =factory.openSession();
//獲取接口對象
// 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)閉會話
session.close();
}
}結(jié)果如圖所示

到此這篇關(guān)于mybatis連接數(shù)據(jù)庫實現(xiàn)雙表查詢的文章就介紹到這了,更多相關(guān)mybatis 雙表查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mybatis-Plus多表關(guān)聯(lián)查詢的使用案例解析
- MyBatis多表查詢和注解開發(fā)案例詳解
- mybatis-plus多表分頁查詢最佳實現(xiàn)方法(非常簡單)
- Mybatis-plus實現(xiàn)join連表查詢的示例代碼
- MyBatis中ResultMap與多表查詢的處理方法
- MybatisPlus多表連接查詢的具體實現(xiàn)
- mybatis于xml方式和注解方式實現(xiàn)多表查詢的操作方法
- mybatis-plus多表查詢操作方法
- MyBatis?實現(xiàn)動態(tài)排序的多表查詢
- 深入解析MybatisPlus多表連接查詢
- Mybatis分頁查詢主從表的實現(xiàn)示例
相關(guān)文章
修改idea的這些啟動參數(shù),令你的idea健步如飛
這篇文章主要介紹了修改idea的這些啟動參數(shù),令你的idea健步如飛~具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
Netty核心功能之數(shù)據(jù)容器ByteBuf詳解
這篇文章主要為大家介紹了Netty核心功能之數(shù)據(jù)容器ByteBuf詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
使用JPA+querydsl如何實現(xiàn)多條件動態(tài)查詢
這篇文章主要介紹了使用JPA+querydsl如何實現(xiàn)多條件動態(tài)查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Intellij Idea中批量導(dǎo)入第三方j(luò)ar包的全過程
引入jar包一般都是針對小的java項目,這篇文章主要給大家介紹了關(guān)于Intellij Idea中批量導(dǎo)入第三方j(luò)ar包的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2021-10-10
log4j中l(wèi)ogger標簽中additivity屬性的用法說明
這篇文章主要介紹了log4j中l(wèi)ogger標簽中additivity屬性的用法說明,基于很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot 集成 Kettle的實現(xiàn)示例
本文主要介紹了SpringBoot 集成 Kettle的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題
這篇文章主要介紹了Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題,非常具有實用價值,需要的朋友可以參考下2017-10-10

