【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》(
整合之後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+Mybatis】Spring整合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-redis】spring整合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客戶
【Java】SpringMVC整合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的架構設計個人覺得結構很清晰,對於想向更高層次發展的開發人員來說,
【系統學習SpringBoot】springBoot整合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 Boot】Spring中@Controller和@RestController之間的區別
處理 public 不同 esp 舉例 rest control tro adding spring Boot入手的第一天,看到例子中的@RestController ............. 相同點:都是用來表示Spring某個類的是否可以接收HTTP請求 不同點:@C
【spring Boot】spring 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