目录
完整项目目录
完整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.milo.springboot</groupId>
<artifactId>springboot-mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-mybatis</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mybatis.version>3.3.0</mybatis.version>
<mybatis-spring.version>1.2.3</mybatis-spring.version>
</properties>
<!-- 添加SpringBoot父项目 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<dependencies>
<!-- 添加SpringBoot依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 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>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 配置jdk -->
<!-- 不配置可能出现 java.lang.UnsupportedClassVersionError: javax/annotation/ManagedBean : Unsupported major.minor version 51.0错误. 原因是jdk版本和spring boot不匹配. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- 添加SpringBoot插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis genenout -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
<finalName>springboot-mybatis</finalName>
</build>
</project>
集成mybatis
pom.xml加入依赖
<!-- 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>
</dependency>
在src/main/resources/mapper中加入UserMapper.xml
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.milo.dao.UserMapper">
<select id="findUserInfo" resultType="cn.milo.domain.User">
select name, age,password from user;
</select>
</mapper>
在src/mian/java/cn/milo/dao中加入UserMapper.java
UserMapper.java
package cn.milo.dao;
import cn.milo.domain.User;
/**
* Created by zl on 2015/8/27.
*/
public interface UserMapper {
User findUserInfo();
}
在src/main/java/cn/milo/domain中写User实体类
User.java
package cn.milo.domain;
/**
* Created by zl on 2015/8/27.
*/
public class User {
private String name;
private Integer age;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
application.properties中添加配置
server.port=8081
mybatis.mapperLocations=mapper/*.xml
mybatis.typeAliasesPackage=cn.milo.domain
spring.datasource.url=jdbc:mysql://118.212.149.xx:3306/Milo?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull
spring.datasource.username=xx
spring.datasource.password=xx
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
App.java
package cn.milo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* Hello world!
*
*/
@SpringBootApplication
@MapperScan("cn.milo.dao")
public class App{
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
大家会发现实体类和mapper.xml都是配置文件中指定的。在App.java的启动类中配置了dao所在位置。
至此我们的mybatis就集成完了,写个Controller验证下 : localhost:8081/user
MyController.java
package cn.milo.controller;
import cn.milo.dao.GirlMapper;
import cn.milo.dao.UserMapper;
import cn.milo.domain.Girl;
import cn.milo.domain.User;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* Created by mac on 2017/8/28.
*/
@Controller
public class MyController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/")
@ResponseBody
public String HelloWorld(){
return "Hello Spring Boot";
}
@RequestMapping("/user")
@ResponseBody
public User user(){
return userMapper.findUserInfo();
}
}
PageHelper插件使用
pom.xml添加依赖
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
大家注意mybatis-spring-boot-starter的版本1.0.0是不支持pagehelper的
接下来我们写一个PageHelper的配置类
MybatisConf.java
package cn.milo.Config;
import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
/**
* Created by mac on 2017/8/28.
*/
@Configuration
public class MybatisConf {
@Bean
public PageHelper pageHelper() {
System.out.println("MyBatisConfiguration.pageHelper()");
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
p.setProperty("reasonable", "true");
pageHelper.setProperties(p);
System.out.println("========== pagehelper init success ============");
return pageHelper;
}
}
到这就pagehelper就集成完了,插件的集成还是比较简单的,每个插件都一样的写法。在controller中写个方法验证下
@RequestMapping("/pagegirl")
@ResponseBody
public List<Girl> pagegirl(){
/*
* 第一个参数是第几页;第二个参数是每页显示条数。
*/
PageHelper.startPage(2,2);
List<Girl> list = girlMapper.selectMany();
return list;
}
开启事务
事务开启也很容易,首先在App.java中添加@EnableTransactionManagement注解
package cn.milo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* Hello world!
*
*/
@SpringBootApplication
@MapperScan("cn.milo.dao")
@EnableTransactionManagement
public class App{
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
在MyController.java中写个方法验证下
@RequestMapping("/tgirl")
@ResponseBody
@Transactional
public String transactionalGirl(){
Girl girl = girlMapper.selectByPrimaryKey(10);
System.out.println("age = " + girl.getAge());
girl.setAge(666);
int k = girlMapper.updateByPrimaryKey(girl);
System.out.println("update result = " + k);
int j = 1/0; //抛出个异常,看数据库情况
int n = girlMapper.deleteByPrimaryKey(girl.getId());
System.out.println("update result = " + n);
return "transactional";
}
druid数据源
druid是阿里开发的一个数据源和c3p0类似,但是比后者性能好很多。具体大家自己官网了解下。
开启方法也是先加入依赖:
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
配置文件中加入下边这个就可以了。
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis-generator
经常用mybatis的对mybatis-generator肯定不陌生,使用方法很多,我以前用myeclipse时候是装的myeclipse插件。现在idea用的比较多。所以我们这次通过maven来使用这个插件
在pom.xml中添加插件
<!-- mybatis genenout -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!-- 这里指定你的generatorConfig.xml的位置 -->
<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
在上边配置好的位置新建一个xml
generatorConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<classPathEntry location="/usr/local/localRepo/mysql/mysql-connector-java/5.1.43/mysql-connector-java-5.1.43.jar" />
<context id="context1">
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://118.212.149.xx:3306/Milo?useUnicode=true&characterEncoding=UTF-8" userId="xx"
password="xx" />
<!-- 生成vo对象 -->
<javaModelGenerator targetPackage="cn.milo.domain"
<!-- maven项目targetProject指向java文件夹就可以了,以前用myeclipse的时候是项目名字 -->
targetProject="/Users/mac/Desktop/spring-mybatis/src/main/java" />
<!-- 生成用于查询的Example对象 -->
<sqlMapGenerator targetPackage="cn.milo.dao"
targetProject="/Users/mac/Desktop/spring-mybatis/src/main/java" />
<!-- 生成DAO的类文件以及配置文件 -->
<javaClientGenerator targetPackage="cn.milo.dao"
targetProject="/Users/mac/Desktop/spring-mybatis/src/main/java" type="XMLMAPPER" />
<!-- 想要生成的数据库表,自动化工具会根据该表的结构生成相应的vo对象 -->
<table schema="" tableName="girl" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
使用mybatis-generator生成我们想要的文件只要执行一下mybatis-generator的生命周期就可以了。