0.项目结构:

---------------------方法一:使用mybatis官方提供的Spring Boot整合包实现---------------------

1.application.properties中配置整合mybatis的配置文件、mybatis扫描别名的基本包与数据源

server.port=80

logging.level.org.springframework=DEBUG
#springboot mybatis
#jiazai mybatis peizhiwenjian
mybatis.mapper-locations = classpath:mapper/*Mapper.xml
mybatis.config-location = classpath:mapper/config/sqlMapConfig.xml
mybatis.type-aliases-package = cn.qlq.bean #shujuyuan
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 123456

2.pom.xml加入springboot整合mybatis的jar包与数据库驱动包

<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>cn.qlq</groupId>
<artifactId>springboot-ssm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent> <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-devtools</artifactId>
</dependency>
<!-- spring-boot整合mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency> <!-- 基本配置 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency> </dependencies>
<build>
<!-- 配置了很多插件 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

3.mybatis全局配置文件:

sqlMapConfig.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> </configuration>

4.编写代码:

(1)User.java

package cn.qlq.bean;

import java.io.Serializable;
import java.util.Date; public class User implements Serializable{ /**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address; public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }

(2)UserMapper.java  (注意接口上的注解是@mapper,代替之前扫描接口的操作)

package cn.qlq.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import cn.qlq.bean.User;

@Mapper
public interface UserMapper { public List<User> findAll(); }

UserMapper.xml

<?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="cn.qlq.mapper.UserMapper">
<select id="findAll" resultType="user">
select * from user
</select>
</mapper>

(3)

UserService.java

package cn.qlq.service;

import java.util.List;

import cn.qlq.bean.User;

public interface UserService {

    /**
* 根据接口查询所用的用户
*/
public List<User> findAllUser();
}

UserServiceImpl.java

package cn.qlq.service.impl;

import java.util.List;
import java.util.Map; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import cn.qlq.bean.User;
import cn.qlq.mapper.UserMapper;
import cn.qlq.service.UserService; @Service
public class UserServiceImpl implements UserService { @Autowired
private UserMapper userMapper; public List<User> findAllUser() {
List<User> list = userMapper.findAll();
return list;
} }

(4)UserController.java

package cn.qlq.action;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import cn.qlq.bean.User;
import cn.qlq.service.UserService; @RestController/**自动返回的是json格式数据***/
public class UserController { @Autowired
private UserService userService; @RequestMapping("list")
public List<User> list(){
List<User> list = userService.findAllUser();
return list;
}
}

注意:@RestController  注解  (自动返回的是json格式数据)

(5)测试类

MySpringBootApplication.java

package cn.qlq;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
public class MySpringBootApplication { public static void main(String[] args) {
//入口运行类
SpringApplication.run(MySpringBootApplication.class, args); } }

4.启动测试

git源码地址:  https://github.com/qiao-zhi/springboot-ssm

---------------方法二:使用mybatis-spring整合的方式,也就是我们传统的方式--------------

这里我们推荐使用第二种,因为这样我们可以很方便的控制Mybatis的各种配置。

首先,创建一个Mybatis的配置类:

代码:

package cn.qlq.config;

import javax.sql.DataSource;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver; @Configuration
public class MyBatisConfig { @Bean
@ConditionalOnMissingBean //当容器里没有指定的Bean的情况下创建该对象
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
// 设置数据源
sqlSessionFactoryBean.setDataSource(dataSource);
// 设置mybatis的主配置文件
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource mybatisConfigXml = resolver.getResource("classpath:mybatis/SqlMapConfig.xml");
sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
// 设置别名包
sqlSessionFactoryBean.setTypeAliasesPackage("cn.qlq.bean");
return sqlSessionFactoryBean;
}
}

然后,创建Mapper接口的扫描类MapperScannerConfig:

package cn.qlq.config;

import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
@AutoConfigureAfter(MyBatisConfig.class) //保证在MyBatisConfig实例化之后再实例化该类
public class MapperScannerConfig { // mapper接口的扫描器
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("cn.qlq.mapper");
return mapperScannerConfigurer;
}
}

创建一个spring配置类,扫描的包,与读取的资源文件,创建数据源:

package cn.qlq.config;

import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; import com.jolbox.bonecp.BoneCPDataSource; @Configuration // 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages = "cn.qlq") // 配置扫描包
@PropertySource(value = { "classpath:db.properties"}, ignoreResourceNotFound = true)
public class SpringConfig { @Value("${jdbc.url}")
private String jdbcUrl; @Value("${jdbc.driverClassName}")
private String jdbcDriverClassName; @Value("${jdbc.username}")
private String jdbcUsername; @Value("${jdbc.password}")
private String jdbcPassword; @Bean(destroyMethod = "close")
public DataSource dataSource() {
BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
// 数据库驱动
boneCPDataSource.setDriverClass(jdbcDriverClassName);
// 相应驱动的jdbcUrl
boneCPDataSource.setJdbcUrl(jdbcUrl);
// 数据库的用户名
boneCPDataSource.setUsername(jdbcUsername);
// 数据库的密码
boneCPDataSource.setPassword(jdbcPassword);
// 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0
boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);
// 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0
boneCPDataSource.setIdleMaxAgeInMinutes(30);
// 每个分区最大的连接数
boneCPDataSource.setMaxConnectionsPerPartition(100);
// 每个分区最小的连接数
boneCPDataSource.setMinConnectionsPerPartition(5);
return boneCPDataSource;
} }

application.properties:

server.port=80

logging.level.org.springframework=DEBUG
#springboot mybatis
#jiazai mybatis peizhiwenjian
#mybatis.mapper-locations = classpath:mapper/*Mapper.xml
#mybatis.config-location = classpath:mapper/config/sqlMapConfig.xml
#mybatis.type-aliases-package = cn.qlq.bean #shujuyuan
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 123456

pom.xml:

<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>cn.qlq</groupId>
<artifactId>springboot-ssm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent> <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-devtools</artifactId>
</dependency>
<!-- spring-boot整合mybatis -->
<!-- <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version> </dependency> -->
<!-- mysql驱动 --> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.7.RELEASE</version>
</dependency> <!-- 基本配置 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency> <!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.7</version>
</dependency>
<!-- Mybatis整合Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp-spring</artifactId>
<version>0.8.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
</dependencies>
<build>
<!-- 配置了很多插件 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

2.启动测试:

  总结:我在使用过程中一开始是采用方式二搭建的环境,并且也是基于方式二整合的Mybatis的Pagehelper。但是在打成jar包运行的时候一直报一个错误,在MybatisConfig报错,所以最后我选择采用第一种方式搭建环境。现在上面的git地址也是基于第一种方式整合,但是提交记录有基于第二种的。git上面的项目也正在完善。目前已经整合; SpringTask、freemarker、thymeleaf等。。。。

最新文章

  1. 同步、更新、下载Android Source &amp; SDK from 国内镜像站(转载)
  2. webpack react基础配置二 热加载
  3. Selenium定位一 --单个元素定位方法
  4. Maven学习之 Settings
  5. Linux系统查看系统是32位还是64位方法总结(转)
  6. shenyi 语录
  7. 苹果Xcode帮助文档阅读指南
  8. uiview 的transitionWithView 方法使用
  9. WebService中控制字符的处理
  10. linux磁盘设备知识
  11. localStorage.ie6.js
  12. Java中的浅复制和深复制 Cloneable clone
  13. C语言可变参数函数的编写
  14. QuartusII13.0使用教程详解(一个完整的工程建立)
  15. 打包可执行的jar
  16. 【Mac】-NO.161.Mac.1 -【MacOS Error running &#39;Tomcat 8.5.371&#39;: Cannot run program Permission denied】
  17. Python学习(八) —— 内置函数和匿名函数
  18. android9.0适配HTTPS:not permitted by network security policy&#39;
  19. PHP实现获取文件后缀名的几种常用方法
  20. js阻止事件冒泡的两种方法

热门文章

  1. 201621123080 《Java程序设计》第10周学习总结
  2. jenkins+svn+pipeline+kubernetes部署java应用(一)
  3. GoF23种设计模式之行为型模式之状态模式
  4. UVa - 12096 集合栈计算机(STL)
  5. Linux学习-工作管理 (job control)
  6. Selenium2用最简xpath查找元素
  7. 将系统从.Net Core2.0升级到.Net Core2.1
  8. windows下创建子进程过程中代码重复执行问题
  9. Java-创建一个线程
  10. 【185天】黑马程序员27天视频学习笔记【Day14-下】