Spring Boot +Spring+ Mybatis的搭建

最近新項目要拋棄之前的SSH框架結構,採用最新的RESTful框架結構去實現。前端

作到先後端分離。數據庫方面準備採用Mybatis框架去操做。java

RESTful web Service的搭建參考官方文檔:http://spring.io/guides/gs/rest-service/mysql

RESTful設計風格通俗來說 就是,合理使用HTTP協議(POST,GET,PUT,DELETE)來請求服務。服務將對應的信息以JSON格式返回前臺,而再也不須要提交請求給服務器,服務器處理請求,轉發給頁面。這個設計風格直接將服務器上的每一個模塊抽象成一個個資源。而前端頁面作的 就是訪問資源,獲取資源信息,展現便可。git

接下來展現SpringBoot+Spring+mybatis的配置github

其中採用Maven管理Jar包 其中的pom.xml以下:web

<properties>
        <java.version>1.6</java.version>
        <mysql-connector-java.version>5.1.36</mysql-connector-java.version>
        <!--  依賴版本  -->
        <mybatis.version>3.3.1</mybatis.version>
        <mybatis.spring.version>1.2.4</mybatis.spring.version>
        <mapper.version>3.3.6</mapper.version>
        <pagehelper.version>4.1.1</pagehelper.version>
    </properties>
    <dependencies>
    	<!-- SpringBoot 的依賴包 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
		<!-- mysql驅動包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-joda</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
        </dependency>
        
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.11</version>
        </dependency>

        <!--Mybatis依賴包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- mybatis會和Spring集成 因此這個包很關鍵 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis.spring.version}</version>
        </dependency>
        <!-- Mybatis Generator -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <!--分頁插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>${pagehelper.version}</version>
        </dependency>
        <!--通用Mapper-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>${mapper.version}</version>
        </dependency>
         
    </dependencies>

在JAR包下載好以後,配置applicationContext.xml文件。這個文件是Spring的核心文件。咱們將在這個文件裏配置MyBatis的數據庫配置,applicationContext.xml配置以下:spring

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans   
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">  
       
      <bean id="ContextTest" class="SSI.applicationContextTest" init-method="testmethod"></bean>
      <bean id="application" class="SSI.Application"></bean>
      
      <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      		<!-- 配置數據源和Mybatis的Mapping文件 -->
      		<property name="dataSource" ref="datasource"></property>
      		<property name="mapperLocations" value="classpath:user-mybatis.xml"></property>
      </bean>
      <!-- 數據源 -->
      <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      	<property name="url" value="*"></property>
      	<property name="driverClassName" value="*"></property>
      	<property name="username" value="*"></property>
      	<property name="password" value="*"></property>
      </bean>
      
      <bean id="userServices" class="Dao.UserServices"></bean>
      <bean id="greetingController" class="SSI.GreetingController">
      		<property name="sqlsessionFactory" ref="sessionFactory"></property>
      </bean>
</beans>

注:這裏的sessionFactory 關聯的類是 org.mybatis.spring.SqlSessionFactoryBean 這個是mybaits的會話工廠。其中的兩個參數dataSource:配置數據源,mapperLocations:配置Mybatis的Mapping文件。sql

這個只是配置了applicationContext.xml 如何告訴SpringBoot啓動的時候加載這個文件呢。以下:數據庫

import org.apache.catalina.LifecycleException;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
	
    public static void main(String[] args) throws LifecycleException {
    	//經過註解加載Bean
//    	SpringApplication.run(Application.class, args);
    	//從Spring配置文件加載Bean
    	SpringApplication.run("classpath:applicationContext.xml", args);
//    	SpringApplication app=new SpringApplication(Application.class);
//    	app.run(args);
    }
}

這樣 在SpringBoot啓動的時候 就會去加載applicationContext.xml文件。這樣Spring,SpringBoot,Mybatis就關聯起來了。SpringBoot是經過註解去發現Bean 詳情參考文檔開頭Spring的官方文檔apache

Mybatis的使用,在Dao層 有三種方案。

  1. 繼承org.mybatis.spring.SqlSessionTemplate
  2. 繼承org.mybatis.spring.support.SqlSessionDaoSupport
  3. 繼承org.mybatis.spring.SqlSessionFactoryBean

分別調用對應的方法去執行SQL 同Mybatis使用。上述三種繼承方案有不一樣的處理方法,

第一種方法,繼承SqlSessionTemplate後 因爲這個類重載了三個帶參構造器,繼承以後  須要實現他的一個構造器。將SessionFactory賦值進去。而後經過sessionFactory來獲取sqlSession

第二種方法,繼承SqlSessionDaoSupport 後 能夠發現 只提供了sqlSession變量可使用。可是sqlSession來自sqlSessionFactory 因此 能夠必須在這裏調用setSqlSessionFactory方法。不然你拿到的sqlsession是一個NULL

第三種方法:繼承SqlSessionFactoryBean 以後 查看buildSqlSessionFactory 方法 以下:

如源代碼所示,你得先配置他的configuration.這個是你配置Mybatis的配置文件。這個類功能至關於讀取配置文件,從新建立sqlSessionfactory。以下:

public class MybatisTest {
	public static void main(String[] args) throws IOException {
		Reader reader=Resources.getResourceAsReader("Mybatis.xml");
		SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
		SqlSession sqlsession=sessionFactory.openSession();
//		user list=sqlsession.selectOne("SSI.user.selectUser", "902889");
		List<user> list=sqlsession.selectList("selectAll");
		System.out.println(list);
	}
}

以上,右鍵application。整個項目啓動。

效果以下

至此整個項目就搭建好了。

相關文章
相關標籤/搜索