环境描述:
1,开发环境jdk8、Tomcat、mysql、idea16.3
2,spring-boot版本1.5.1
idea建立一个maven工程(只熟悉maven),很简单。填写groupid和ArtifactId即可(图一),点击下一步之后Finished。
图一:
依赖配置:
只能说java的东西好多,版本也好多。有限的经验是如果是大牛想体验新功能用beta就行,那不是很熟悉还是用Release,如果Release最近有很多,根据热度选中上线时间半年的吧,可以在碰到问题的时候别人也许会帮你踩过坑。
贴出来pom.xml配置:
4.0.0 com.springmvc.demo SpringMVC 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 1.5.1.RELEASE UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-thymeleaf net.sourceforge.nekohtml nekohtml org.mybatis.spring.boot mybatis-spring-boot-starter 1.1.1 org.mybatis mybatis-spring 1.3.1 org.mybatis mybatis 3.4.2 org.apache.ibatis ibatis-core 3.0 tk.mybatis mapper-spring-boot-starter 1.1.0 org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-actuator org.apache.tomcat tomcat-jdbc mysql mysql-connector-java com.alibaba fastjson 1.2.23 org.springframework.boot spring-boot-maven-plugin true
如果不是很了解包所在或者描述,可以多看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#datasourcespring.datasource.url=jdbc:mysql://127.0.0.1:3306/testspring.datasource.username=rootspring.datasource.password=rootspring.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/