環境描述:
1,開發環境jdk8、Tomcat、mysql、idea16.3
2,spring-boot版本1.5.1
idea建立一個maven工程(只熟悉maven),很簡單。填寫groupid和ArtifactId即可(圖一),點擊下一步之後Finished。
圖一:
依賴配置:
只能說java的東西好多,版本也好多。有限的經驗是如果是大牛想體驗新功能用beta就行,那不是很熟悉還是用Release,如果Release最近有很多,根據熱度選中上線時間半年的吧,可以在碰到問題的時候別人也許會幫你踩過坑。
貼出來pom.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springmvc.demo</groupId>
<artifactId>SpringMVC</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--支持HTML5-->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-core -->
<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-core</artifactId>
<version>3.0</version>
</dependency>
<!--mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<!--支持使用JDBC訪問數據庫-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--添加適用於生產環境的功能,性能指標和監測等功能-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--json support-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.23</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
</project>
如果不是很瞭解包所在或者描述,可以多看https://mvnrepository.com。
代碼目錄結構如下:
入口文件:
- Application.java文件,在做測試的時候,DataSource因爲用IEDA的自動import功能,造成誤導入javax.activation.DataSource了這個包,調試了半天。
package com.springmvc;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
//import javax.activation.DataSource;
import javax.sql.DataSource;
import java.io.IOException;
import java.util.logging.Logger;
/**
* Created by MT on 2017/3/2.
*/
@EnableAutoConfiguration
@SpringBootApplication
@ComponentScan
@MapperScan("com.springmvc.mapper")
public class Application {
private static Logger logger = Logger.getLogger(String.valueOf(Application.class));
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return (DataSource) new org.apache.tomcat.jdbc.pool.DataSource();
}
@Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setDataSource((javax.sql.DataSource) dataSource());
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
ssfb.setMapperLocations(resolver.getResources("classpath:/xml/*.xml"));
System.out.println(ssfb.getObject());
return ssfb.getObject();
}
/**
* main entrance
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
logger.info("-------my spring start-------");
}
}
其中需要留意的是spring.datasource,配置在properties文件裏面。還有就是SqlSessionFactory獲取resource的路徑,注意路徑即可。
application.properties配置文件
spring.thymeleaf.mode=LEGACYHTML5
#datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
其餘代碼就貼到github上面。https://github.com/iruimeng/springmvc
常見錯誤
- 在代碼編譯完成,執行簡單靜態頁ok。在訪問數據庫的時候報錯java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer,看有人說是版本問題,修改mybatis-spring爲最新版本。問題解決。
- 關於MyBatis-Spring、MyBatis、Spring三者版本依賴,還是得多看看官方文檔。詳見鏈接 http://www.mybatis.org/spring/zh/