1. 程式人生 > >【Spring+Mybatis】Spring整合Mybatis

【Spring+Mybatis】Spring整合Mybatis

在《【Mybatis】Helloworld》(點選開啟連結)大家看到使用Mybatis需要撰寫一個數據庫連線與配置的xml檔案,而Spring具體整合JDBC的功能,具體見《【Spring】整合JDBC連線資料庫》(點選開啟連結),可以代替Mybatis連線資料庫和配置資料庫,而直接Mybatis對資料庫增刪改查的優良特性,這在Java尤其在Javaee的程式設計具有明顯優勢,下面舉一個例子說明Spring如何整合Mybatis。

一、所需要的jar包。

除了《【Spring】Spring3.x的下載與配置》(點選開啟連結)中需要的Spring包,和《【Mybatis】Helloworld》(

點選開啟連結)需要的Mybatis包,還需要在https://github.com/mybatis/spring/releases下載一個Spring連線Mybatis的jar包mybatis-spring-1.3.1.jar:


整合之後lib資料夾如下所示,同時,在Eclipse的Java工程載入所有的jar包。


二、製作過程

由於資料庫和Java交流沒有Jsp什麼事情,所以這裡用最簡單的Javase工程做例子。處理的還是這樣早已舉個栗子舉爛的Mysql中test資料庫的User使用者表:


先貼上工程目錄結構。


對比於《【Mybatis】Helloworld》(點選開啟連結)的目錄結構基本大同小異,唯一的不同,Spring整合Mybatis能減少部分程式碼量,同時也好管理。

1、首先是Spring的核心applicationContext.xml,這個檔案,首先利用《【Spring】整合JDBC連線資料庫》(點選開啟連結),用Spring填充org.springframework.jdbc.datasource.DriverManagerDataSource中該被注入的變數,賦予相應的值則完成,其次在利用org.mybatis.spring.SqlSessionFactoryBean這個類,初始化資料來源,然後再初始化configLocation,指明初始化檔案是configuration.xml,Mybatis的初始化完成,最後是在org.mybatis.spring.mapper.MapperScannerConfigurer指明資料庫介面的所在的包,這裡是test.dao。通過Mybatis的自動掃描,在其它類就能直接使用dao了。尤其在Javaee,Spring自動啟動之後,給dao配上getter和setter,就會自動注入好了。並初始化資料庫操作的session。這些都是Spring整合Mybatis的指定動作,固定格式,知道替換相應的值適配你的資料庫和Java工程即可。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-4.1.xsd ">
	<!-- Spring連線的JDBC資料來源 -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useOldAliasMetadataBehavior=true" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>
	<!-- 指出Mybatis的核心配置檔案,關於資料庫表和Java檔案的對映寫在裡面 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="configuration.xml"></property>
	</bean>
	<!-- 指出資料庫介面方法所在的包 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
		autowire="byName">
		<property name="basePackage" value="test.dao" />
		<property name="sqlSessionFactory" ref="sqlSessionFactory" />
	</bean>
</beans> 

2、接下來是Mybatis的核心配置檔案configuration.xml,這個檔案由於有Spring的存在,已經不需要大篇幅在<typeAliases><environments>節點大篇幅寫Mybatis連線資料來源的關係,畢竟一切關於巨集觀上的事情都交給了Spring。Mybatis只要管好自己,書明羅列出資料庫表和Java的對映關係就行。這裡有幾個表就指明有幾個mapper.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>
	<!-- 指明在user這個表中所包含常用sql方法,test/mapper/User.xml是一個指明java方法和sql語法聯絡的xml檔案 -->
	<mappers>
		<mapper resource="test/mapper/User.xml" />
	</mappers>
</configuration>   

3、然後在test.mapper這個包下寫一個關於User表,資料庫和Java的對映關係的mapper檔案User.xml,具體是寫明test.dao包下的資料庫接口裡面Java方法匹配的,關於此表的Sql查詢語句。
<?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.dao.UserDao">
	<select id="findAllUsers" resultType="test.entity.User">
		select * from user
	</select>
</mapper> 

同時貼上資料庫介面類UserDao.java:
package test.dao;

import java.util.List;

import test.entity.User;

public interface UserDao {
	public List<User> findAllUsers();
}

和沒什麼好說的實體類User.java:
package test.entity;

public class User {
	
	private Integer id;
	private String username;
	private String password;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}

上述三者的關係如下:


4、最後,這樣配好之後,就能夠在其餘的Java類隨便呼叫UserDao.java中的findAllUser()方法,得到一個充滿User表的List了,比如測試的SpringMybatis.java,如下程式碼:

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import test.dao.UserDao;
import test.entity.User;

public class SpringMybatis {

	public static void main(String[] args) {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
				"applicationContext.xml");// 初始化spring
		UserDao userDao = (UserDao) applicationContext.getBean("userDao");// 初始化userDao這個資料庫介面類,由於Mybatis自動掃描的,可以直接拿"userDao"(首字母要小寫),無須在配個idapplicationContext.xml
		List<User> user_list = new ArrayList<User>();
		user_list = userDao.findAllUsers();
		for (User user : user_list) {// jdk1.5+的foreach列印,省事,不用寫這麼多程式碼了
			System.out.println(user.getId() + "\t" + user.getUsername() + "\t"
					+ user.getPassword());
		}
		((ConfigurableApplicationContext) applicationContext).close();// 關閉Spring避免警告
	}

}

執行結果如下所示:


將表的資料取過來,完美列印了。

相關推薦

Spring+MybatisSpring整合Mybatis

在《【Mybatis】Helloworld》(點選開啟連結)大家看到使用Mybatis需要撰寫一個數據庫連線與配置的xml檔案,而Spring具體整合JDBC的功能,具體見《【Spring】整合JDBC連線資料庫》(點選開啟連結),可以代替Mybatis連線資料庫和配置資料

新手須知Spring Boot 2.0.0 + MyBatis + Shiro + Swagger 開發專案踩坑記錄

寫在前面 Swagger 2.8.0 Spring Boot 2.0.0.RELEASE Shiro 1.4.0 Mybatis 1.3.1 填坑 踩坑一: MyBatis xml檔案

十九Spring Boot 之多資料來源和分散式事務(JTA、Atomikos、Druid、Mybatis)

1.事務開始 2.A資料來源insert 3.B資料來源insert 4.報錯 5.事務回滾(A、B資料來源都回滾) 專案目錄 pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec

Spring Boot2.0之整合Mybatis

    我在寫這個教程時候,踩了個坑,一下子折騰到了凌晨兩點半。 坑: Spring Boot對於Mysql8.1的驅動支援不好啊 我本地安裝的是Mysql8.1版本,在開發時候。pom提示不需要輸入驅動版本(因為Spring Boot會自動匹配),毛啊。根本就沒有匹配成功。然後我

Spring Boot 2.0 整合 Mybatis

Spring Boot 2.0 整合 Mybatis分為兩種模式。一種是XML配置,一種是註解。 一、XML配置方式整合 1.1 依賴檔案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/

nosql-redisspring整合redis

環境: MAVEN+SPRING+MYBATIS+MYSQL+REDIS 1 pom.xml檔案下載依賴: <dependency> <groupId>org.springframework.data</groupId> &

3、Spring Boot 2.x整合Mybatis並且實現單表的增刪除改查

上一篇建立了一個最簡單的Spring Boot 2.x專案,算是有了一個初步的認識。 這一篇我們在上一篇專案的基礎上,實現以下目標: 1、專案中整合Mybatis Generator進行mapper相關檔案的自動生成; 2、整合Mybatis連線資料庫並且實現單表的增刪

必看SpringBoot整合Spring Data Elasticsearch

原生java整合elasticsearch的API地址:(類似JDBC) https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.2/java-docs.html Elasticsearch提供的Java客戶

JavaSpringMVC整合mybatis 連線池c3p0和druid分別實驗

1.pom.xmlSpring框架包 mybatis包 AOP包 aspectj包 aopalliance包<!-- mysql start --> <dependency> <groupId>mysql</groupId

spring系列- Springmvc整合apache shiro安全框架

shiro: shiro是apache開源的安全框架,可以方便用來處理使用者資訊認證、使用者授權控制、資訊加密等功能,因為其小巧而功能強大在很多SSM架構的web應用系統中被廣泛採用,shiro的架構設計個人覺得結構很清晰,對於想向更高層次發展的開發人員來說,

系統學習SpringBootspringBoot整合Mybatis

學了幾天spring boot ,感覺spring boot整合了spring mvc 和spring的優點,,遮蔽了大量的配置檔案(雖然spring可以使用註解,但是spring boot讓配置更簡單

SSM框架Spring整合Dubbo服務(附帶原始碼)

        本專案是在上一篇搭建的SSM框架的基礎上做的,同樣是一個非maven的傳統web專案。 與傳統軟體行業不同的是,網際網路產品多是高併發的。高併發就需要從硬體和軟體兩方面共同來解決。阿里

第三章:Spring Cloud服務提供者整合Mybatis

接第二章 服務提供者簡單使用spring boot整合mybatis來實現 1、不太相似的pom.xml: <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.a

SpringBoot——SpringBoot 整合mybatis-plus 單資料來源 & 多資料來源,附原始碼

相信大家已經看了不少的教程了,所以在此我不在贅述。。。。。。 遇到的坑,在專案中readme.md 中有描述。具體下載下來配置比較詳細,初始化sql ,單元測試。。。檢視流程即可。 demo非常簡單,下載下來參考 readme.md 修改必要內容即可完成配

使用MyBatis-Spring-Boot-Starter快速整合mybatis

MyBatis-Spring-Boot-Starter是什麼? The MyBatis-Spring-Boot-Starter help you build quickly MyBatis applications on top of the Sprin

spring原始碼學習之整合Mybatis原理分析

開發十年,就只剩下這套架構體系了! >>>   

常用配置Spring框架web.xml通用配置

name star spring config ini param lis 框架 -name <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun

spring BootSpring中@Controller和@RestController之間的區別

處理 public 不同 esp 舉例 rest control tro adding spring Boot入手的第一天,看到例子中的@RestController ............. 相同點:都是用來表示Spring某個類的是否可以接收HTTP請求 不同點:@C

spring Bootspring boot獲取資源文件的三種方式兩種情況下

不用 ash 12c ica pla bsp foreach set 使用 首先聲明一點,springboot獲取資源文件,需要看是   1》從spring boot默認的application.properties資源文件中獲取   2》還是從自定義的資源文件中獲取

日常錯誤spring-boot配置文件讀取不到

無法 pan factory sdn 一個 pre nco span xxx 最近在用spring-boot做項目時,遇到自定義的配置文件無法讀取到的問題,通過在appcation.java類上定義@PropertySource(value = {"classpath:XX