mybatis連接mysql的實(shí)現(xiàn)過(guò)程
mybatis連接數(shù)據(jù)庫(kù)
配置Maven的pom文件,導(dǎo)入依賴(lài)的工具包
配置pom文件可以免去下載和導(dǎo)入各種依賴(lài)包(jar)的操作,具體可以去看之前的Maven的相關(guān)文章。
<dependencies>
<!--junit單元測(cè)試坐標(biāo)-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--mysql連接數(shù)據(jù)庫(kù)的依賴(lài)坐標(biāo)坐標(biāo)-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!--導(dǎo)入mybatis坐標(biāo)-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!--導(dǎo)入druid連接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.24</version>
</dependency>
<!--導(dǎo)入dbutils坐標(biāo)-->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.6</version>
</dependency>
</dependencies>- junit單元測(cè)試,可以方便我們測(cè)試每個(gè)sql語(yǔ)句的函數(shù)。
- mysql-connect-xxx時(shí)jdbc的連接驅(qū)動(dòng)的jar包,是連接數(shù)據(jù)庫(kù)的必要條件
- mybatis坐標(biāo)是數(shù)據(jù)庫(kù)操作框架,簡(jiǎn)化jdbc的操作,當(dāng)然如果你習(xí)慣jdbc操作的化可以導(dǎo)入jdbc的坐標(biāo)
- druid連接池,連接池是一個(gè)容器,優(yōu)化線(xiàn)程的工具,不必為每個(gè)操作創(chuàng)建單個(gè)的數(shù)據(jù)庫(kù)連接。
- dbutil也是jdbc的簡(jiǎn)化工具包,使查詢(xún)和更新變得更簡(jiǎn)單,并能處理查詢(xún)的結(jié)果集。
定義mybatis框架的配置文件mybatis-config.xml
該文件在maven項(xiàng)目目錄結(jié)構(gòu)的resoueces目錄下,主要實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接和配置sql語(yǔ)句簡(jiǎn)化數(shù)據(jù)庫(kù)操作的。

IDEA實(shí)現(xiàn)Maven項(xiàng)目創(chuàng)建并連接Tomcat
<?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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--mappper映射路徑-->
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>需要修改的有兩個(gè)部分:
連接配置(配置mysql連接的信息和jdbc差不多)${driver}修改為jdbc配置使的Driver對(duì)象的內(nèi)容。${url}也是jdbc連接數(shù)據(jù)時(shí)的配置,下面兩個(gè)username和password是數(shù)據(jù)庫(kù)的登錄名(root)和密碼。其實(shí)這些和jdbc一樣。
mapper映射路徑(將sql語(yǔ)句封裝為一個(gè)帶參方法的配置文件的路徑)標(biāo)簽中的resource的內(nèi)容要修改,改為對(duì)象映射文件(如UserMapper)的路徑。有幾個(gè)文件就要重寫(xiě)幾個(gè)路徑。
- 注意帶$的要修改,和jdbc的一樣mysql的8.0以上的driver=“com.mysql.cj.jdbc.Driver”;url=“jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC”。db1是數(shù)據(jù)庫(kù)的名稱(chēng),相當(dāng)于”use db1”的sql語(yǔ)句后面要有問(wèn)號(hào)分割,數(shù)據(jù)庫(kù)密碼要正確。
- mappers下的mapper的resource路徑要修改成對(duì)象映射的xml路徑。即下面的UserMapper.xml路徑
配置對(duì)象映射文件UserMapper.xml
該文件的作用時(shí)將數(shù)據(jù)的表映射為javabean的對(duì)象。
<?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="test">
<select id="selectAll" resultType="model.User">
select * from Blog where id = #{id}
</select>
</mapper>該文件就是將sql語(yǔ)句封裝為一個(gè)帶參方法,操作數(shù)據(jù)庫(kù)是直接調(diào)用。mapper標(biāo)簽就是sql語(yǔ)句id就是被封裝的方法。
需要修改的有三個(gè)地方:namespace,id,resultType,sql語(yǔ)句。
- namespace屬性,如果你熟悉mybatis你就知道使用mapper代理開(kāi)發(fā)時(shí)這里需要修改為映射對(duì)象的路徑(否則隨便命名test即可,也可以直接使用默認(rèn)的)。
- id是sql封裝后的方法名自己定義。
- resultType定義查詢(xún)結(jié)果的返回的數(shù)據(jù)類(lèi)型MyBatis查詢(xún)結(jié)果resultType返回值類(lèi)型詳細(xì)介紹
有string,list,javabean,map等類(lèi)型。我們直接返回javabean即可(返回javabean時(shí)要填寫(xiě)javabean的路徑)即model.User。
sql語(yǔ)句中的#{}是占位符,和jdbc的?一樣傳遞參數(shù)的。Blog改為對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名,這個(gè)sql語(yǔ)句要能在mysql命令框運(yùn)行的(帶參數(shù)的話(huà))
- 看一下我的javabean路徑:

namespace可以隨便命名,select的id要唯一,resulttype為對(duì)應(yīng)javabean的User類(lèi)即model.User。該文件的名稱(chēng)為UserMapper.xml。
編寫(xiě)數(shù)據(jù)庫(kù)連接代碼
package mybatis;
import model.User;
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.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MybatisTest {
@Test
public void method() throws IOException { //單元測(cè)試不能要static
//mybatis框架都在xml配置文件中加載配置文件
//從 XML 文件中構(gòu)建 SqlSessionFactory 的實(shí)例
String resource = "mybatis-config.xml";
InputStream inputStream = null;
inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//從 SqlSessionFactory 中獲取 SqlSession
SqlSession session = sqlSessionFactory.openSession();
//執(zhí)行sql
List<User> users=session.selectList("test.selectAll",2);
System.out.println(users);
//釋放資源
session.close();
}
}
測(cè)試代碼中只有執(zhí)行sql的步驟需要修改,在前面的配置文件中test時(shí)namespace隨便名命名的,selectAll是id(封裝的方法)selectList是sqlsession的處理查詢(xún)結(jié)果集的方法,將查詢(xún)對(duì)象存儲(chǔ)到list集合中。并用List的泛型類(lèi)接收。
我先演示一個(gè)不帶參數(shù)的查詢(xún):將sql語(yǔ)句改為:select * from user,刪除執(zhí)行sql中的1(查詢(xún)所有)
- 如圖所示運(yùn)行結(jié)果:

- 對(duì)應(yīng)數(shù)據(jù)中的user表:

原樣運(yùn)行的話(huà)是有參數(shù)的,在方法后面直接添加一個(gè)參數(shù)就可以了,如圖上的提示paramter為參數(shù)。
- 填入一個(gè)數(shù)字2.

- 如圖運(yùn)行結(jié)果:

由上上個(gè)圖可以看出,第三個(gè)參數(shù)變?yōu)榱藃owBounds,有興趣的可以了解一下,但是我們知道的是,肯定不是傳遞第二個(gè)參數(shù)的對(duì)象。那么封裝sql語(yǔ)句是有多個(gè)參數(shù)該怎么辦呢?
就需要使用mybatis的mapper代理開(kāi)發(fā)了。用于解決傳遞多個(gè)參數(shù)的問(wèn)題。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring實(shí)現(xiàn)處理跨域請(qǐng)求代碼詳解
這篇文章主要介紹了Spring實(shí)現(xiàn)處理跨域請(qǐng)求代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以了解下。2017-12-12
兩種Eclipse部署動(dòng)態(tài)web項(xiàng)目方法
這篇文章主要介紹了兩種Eclipse部署動(dòng)態(tài)web項(xiàng)目方法,需要的朋友可以參考下2015-11-11
springboot+hutool批量生成二維碼壓縮導(dǎo)出功能
這篇文章主要介紹了springboot+hutool批量生成二維碼壓縮導(dǎo)出功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10
淺談JAVA工作流的優(yōu)雅實(shí)現(xiàn)方式
這篇文章主要介紹了淺談JAVA工作流的優(yōu)雅實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
K均值聚類(lèi)算法的Java版實(shí)現(xiàn)代碼示例
這篇文章主要介紹了K均值聚類(lèi)算法的Java版實(shí)現(xiàn)代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
基于spring+hibernate+JQuery開(kāi)發(fā)之電子相冊(cè)(附源碼下載)
本篇文章介紹了,基于spring+hibernate+JQuery開(kāi)發(fā)之電子相冊(cè)(附源碼下載)。需要的朋友參考下2013-05-05

