Spring Boot : 集成mybatis、pagehelper插件、开启事务、druid数据源配置、mybatis-generator(十一)

目录

完整项目目录

这里写图片描述

完整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&amp;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的生命周期就可以了。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值