原文链接

我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件。然后再使用阿里巴巴提供的开源连接池druid,这个连接池的好处我就不说了,集合了所有连接池的好处,并且还提供了监控等功能,加大了可扩展性等等。

  1. 创建一个springboot项目:

 

 2.可以看到的是我们除了引入web依赖之外还引入了三个依赖,分别是MySQL,JDBC,Mybatis,我们如下观看一下完整的依赖情况:    

  1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5
6 <groupId>com.example</groupId>
7 <artifactId>springboot-mybatis02</artifactId>
8 <version>0.0.1-SNAPSHOT</version>
9 <packaging>jar</packaging>
10
11 <name>springboot-mybatis02</name>
12 <description>Demo project for Spring Boot</description>
13
14 <parent>
15 <groupId>org.springframework.boot</groupId>
16 <artifactId>spring-boot-starter-parent</artifactId>
17 <version>2.0.1.RELEASE</version>
18 <relativePath/> <!-- lookup parent from repository -->
19 </parent>
20
21 <properties>
22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
24 <java.version>1.8</java.version>
25 </properties>
26
27 <dependencies>
28 <dependency>
29 <groupId>org.springframework.boot</groupId>
30 <artifactId>spring-boot-starter-jdbc</artifactId>
31 </dependency>
32
33 <!--web依赖-->
34 <dependency>
35 <groupId>org.springframework.boot</groupId>
36 <artifactId>spring-boot-starter-web</artifactId>
37 </dependency>
38
39 <!--这个依赖已经包括JDBC依赖-->
40 <dependency>
41 <groupId>org.mybatis.spring.boot</groupId>
42 <artifactId>mybatis-spring-boot-starter</artifactId>
43 <version>1.3.2</version>
44 </dependency>
45
46 <!--数据库连接-->
47 <dependency>
48 <groupId>mysql</groupId>
49 <artifactId>mysql-connector-java</artifactId>
50 <scope>runtime</scope>
51 </dependency>
52
53 <!--需要手动添加的依赖-->
54 <!--使用durid连接池的依赖-->
55 <dependency>
56 <groupId>com.alibaba</groupId>
57 <artifactId>druid-spring-boot-starter</artifactId>
58 <version>1.1.1</version>
59 </dependency>
60   
61     <!--热部署依赖-->
62     <dependency>
63      <groupId>org.springframework.boot</groupId>
64     <artifactId>spring-boot-devtools</artifactId>
65     </dependency>
66
67     <!--thymeleaf依赖-->
68     <dependency>
69      <groupId>org.springframework.boot</groupId>
70     <artifactId>spring-boot-starter-thymeleaf</artifactId>
71     </dependency>
72
73
74 <!-- 分页插件 -->
75 <dependency>
76 <groupId>com.github.pagehelper</groupId>
77 <artifactId>pagehelper-spring-boot-starter</artifactId>
78 <version>4.1.6</version>
79 </dependency>
80
81 <dependency>
82 <groupId>org.springframework.boot</groupId>
83 <artifactId>spring-boot-starter-test</artifactId>
84 <scope>test</scope>
85 </dependency>
86 </dependencies>
87
88 <build>
89 <plugins>
90 <plugin>
91 <groupId>org.springframework.boot</groupId>
92 <artifactId>spring-boot-maven-plugin</artifactId>
93 </plugin>
94
95 <!-- mybatis generator 自动生成代码插件 -->
96 <plugin>
97 <groupId>org.mybatis.generator</groupId>
98 <artifactId>mybatis-generator-maven-plugin</artifactId>
99 <version>1.3.2</version>
100 <configuration>
101 <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
102 <overwrite>true</overwrite>
103 <verbose>true</verbose>
104 </configuration>
105 </plugin>
106 </plugins>
107 </build>
108
109
110 </project>

 3.依赖引入完成以后我们再对application.properties配置文件进行编辑:  

 1 #设置访问端口
2 server.port=80
3
4 #thymeleaf配置,这里是可以省略的,因为默认配置已经足够
5 #关闭缓存,及时刷新页面,这一点很重要
6 spring.thymeleaf.cache=false
7 #注释的部分是Thymeleaf默认的配置,如有其它需求可以自行更改
8 #spring.thymeleaf.prefix=classpath:/templates/
9 #spring.thymeleaf.suffix=.html
10 #spring.thymeleaf.mode=HTML5
11 #spring.thymeleaf.encoding=UTF-8
12 #spring.thymeleaf.servlet.content-type=text/html
13
14
15 #设置热部署
16 #开启热部署
17 spring.devtools.restart.enabled=true
18 #重启范围
19 spring.devtools.restart.additional-paths=src/main/java
20
21 #设置数据源
22 #数据库连接用户名
23 spring.datasource.username=root
24 #数据库连接密码
25 spring.datasource.password=123
26 #驱动
27 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
28 #数据库连接路径
29 spring.datasource.url=jdbc:mysql://localhost:3306/bysj
30 #连接池类型
31 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
32
33 #连接池配置,因为springboot默认是开启了连接池的,它有默认配置,这一段可以忽略
34 # 初始化大小,最小,最大
35 spring.datasource.initialSize=5
36 spring.datasource.minIdle=5
37 spring.datasource.maxActive=20
38 # 配置获取连接等待超时的时间
39 spring.datasource.maxWait=60000
40 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
41 spring.datasource.timeBetweenEvictionRunsMillis=60000
42 # 配置一个连接在池中最小生存的时间,单位是毫秒
43 spring.datasource.minEvictableIdleTimeMillis=300000
44 spring.datasource.validationQuery=SELECT 1 FROM DUAL
45 spring.datasource.testWhileIdle=true
46 spring.datasource.testOnBorrow=false
47 spring.datasource.testOnReturn=false
48 # 打开PSCache,并且指定每个连接上PSCache的大小
49 spring.datasource.poolPreparedStatements=true
50 spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
51 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
52 spring.datasource.filters=stat,wall,log4j
53 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
54 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
55
56 #配置mybatis
57 mybatis.mapper-location=classpath:mapping/*.xml
58 #全局的映射,不用在xml文件写实体类的全路径
59 mybatis.type-aliases-package=com.zsl.pojo
60 #开启驼峰映射
  mybatis.configuration.map-underscore-to-camel-case=true
61 #配置分页插件
62 #pagehelper分页插件
  pagehelper.helper-dialect=mysql
  pagehelper.reasonable=true
  pagehelper.support-methods-arguments=true
  pagehelper.params=count=countSql

 4. 配置generator自动生成代码:文件放置的位置就在pom.xml文件里面一如插件的位置${basedir}/src/main/resources/generator/generatorConfig.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE generatorConfiguration
3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
5 <generatorConfiguration>
6 <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
7 <classPathEntry location="C:\mysql-connector-java-5.1.41.jar"/>
8 <context id="DB2Tables" targetRuntime="MyBatis3">
9 <commentGenerator>
10 <property name="suppressDate" value="true"/>
11 <!-- 是否去除自动生成的注释 true:是 : false:否 -->
12 <property name="suppressAllComments" value="true"/>
13 </commentGenerator>
14 <!--数据库链接URL,用户名、密码 -->
15 <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/bysj" userId="root" password="123">
16 </jdbcConnection>
17 <javaTypeResolver>
18 <property name="forceBigDecimals" value="false"/>
19 </javaTypeResolver>
20 <!-- 生成模型的包名和位置-->
21 <javaModelGenerator targetPackage="com.zsl.pojo" targetProject="src/main/java">
22 <property name="enableSubPackages" value="true"/>
23 <property name="trimStrings" value="true"/>
24 </javaModelGenerator>
25 <!-- 生成映射文件的包名和位置-->
26 <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
27 <property name="enableSubPackages" value="true"/>
28 </sqlMapGenerator>
29 <!-- 生成DAO的包名和位置-->
30 <javaClientGenerator type="XMLMAPPER" targetPackage="com.zsl.mapper" targetProject="src/main/java">
31 <property name="enableSubPackages" value="true"/>
32 </javaClientGenerator>
33 <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
34 <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
35 </context>
36 </generatorConfiguration>

  5.创建数据库以及表格  

CREATE DATABASE bysj;

CREATE TABLE user(
user_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(255) NOT NULL ,
password VARCHAR(255) NOT NULL ,
phone VARCHAR(255) NOT NULL
) ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;

  6. 操作IDEA生成代码:Run-->Edit Configurations

  

  回到下图所示页面的时候点击三角即可:

  

  7.查看项目情况以及生成代码:

    7.1:生成的mapper:

     

    7.2:生成的pojo实体类:

     

     7.3生成的mapper的xml文件:在这里务必要注意namespace是否正确,请注意查看这一点

 1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
3 <mapper namespace="com.zsl.mapper.UserMapper" >
4 <resultMap id="BaseResultMap" type="com.zsl.pojo.User" >
5 <id column="user_id" property="userId" jdbcType="INTEGER" />
6 <result column="user_name" property="userName" jdbcType="VARCHAR" />
7 <result column="password" property="password" jdbcType="VARCHAR" />
8 <result column="phone" property="phone" jdbcType="VARCHAR" />
9 </resultMap>
10 <sql id="Base_Column_List" >
11 user_id, user_name, password, phone
12 </sql>
   <!--自己写的-->
   <select id="selectAllUser" resultType="user">
     select
    <include refid="Base_Column_List" />
    from user;
   </select>
13 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
14 select
15 <include refid="Base_Column_List" />
16 from user
17 where user_id = #{userId,jdbcType=INTEGER}
18 </select>
19 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
20 delete from user
21 where user_id = #{userId,jdbcType=INTEGER}
22 </delete>
23 <insert id="insert" parameterType="com.zsl.pojo.User" >
24 insert into user (user_id, user_name, password,
25 phone)
26 values (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
27 #{phone,jdbcType=VARCHAR})
28 </insert>
29 <insert id="insertSelective" parameterType="com.zsl.pojo.User" >
30 insert into user
31 <trim prefix="(" suffix=")" suffixOverrides="," >
32 <if test="userId != null" >
33 user_id,
34 </if>
35 <if test="userName != null" >
36 user_name,
37 </if>
38 <if test="password != null" >
39 password,
40 </if>
41 <if test="phone != null" >
42 phone,
43 </if>
44 </trim>
45 <trim prefix="values (" suffix=")" suffixOverrides="," >
46 <if test="userId != null" >
47 #{userId,jdbcType=INTEGER},
48 </if>
49 <if test="userName != null" >
50 #{userName,jdbcType=VARCHAR},
51 </if>
52 <if test="password != null" >
53 #{password,jdbcType=VARCHAR},
54 </if>
55 <if test="phone != null" >
56 #{phone,jdbcType=VARCHAR},
57 </if>
58 </trim>
59 </insert>
60 <update id="updateByPrimaryKeySelective" parameterType="com.zsl.pojo.User" >
61 update user
62 <set >
63 <if test="userName != null" >
64 user_name = #{userName,jdbcType=VARCHAR},
65 </if>
66 <if test="password != null" >
67 password = #{password,jdbcType=VARCHAR},
68 </if>
69 <if test="phone != null" >
70 phone = #{phone,jdbcType=VARCHAR},
71 </if>
72 </set>
73 where user_id = #{userId,jdbcType=INTEGER}
74 </update>
75 <update id="updateByPrimaryKey" parameterType="com.zsl.pojo.User" >
76 update user
77 set user_name = #{userName,jdbcType=VARCHAR},
78 password = #{password,jdbcType=VARCHAR},
79 phone = #{phone,jdbcType=VARCHAR}
80 where user_id = #{userId,jdbcType=INTEGER}
81 </update>
82 </mapper>

    7.4项目的总体结构:

    

    7.5 自己用于测试分页,驼峰映射,实体类映射等配置的controller,service

 1 package com.zsl.controller;
2
3 import com.zsl.pojo.User;
4 import com.zsl.service.impl.UserServiceImpl;
5 import org.springframework.stereotype.Controller;
6 import org.springframework.web.bind.annotation.RequestMapping;
7 import org.springframework.web.bind.annotation.ResponseBody;
8
9 import javax.annotation.Resource;
10 import java.util.List;
11
12 @Controller
13 public class Userontroller {
14
15 @Resource
16 private UserServiceImpl userService;
17
18 //增加用户
19 @ResponseBody
20 @RequestMapping("/insertUser")
21 public String insertUser(User user){
22 return userService.insertUser(user);
23 }
24
25 //查询所有的用户
26 @ResponseBody
27 @RequestMapping("/selectAllUser")
28 public String getAllUser(){
29 List<User> list = userService.selectAllUser();
30 System.out.println(list.size());
31 System.out.println(list);
32 System.out.println(list.get(1).getUserId());
33 return null;
34 }
35 }

 1 package com.zsl.service.impl;
2
3 import com.zsl.mapper.UserMapper;
4 import com.zsl.pojo.User;
5 import com.zsl.service.UserService;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service;
8
9 import java.util.List;
10
11 @Service
12 public class UserServiceImpl implements UserService {
13
14 @Autowired
15 private UserMapper userMapper;//报错不影响
16 /*
17 * 增加/修改用户
18 * */
19 @Override
20 public String insertUser(User user) {
21 //增加用户
22 if(user.getUserId() == null){
23 Integer i = userMapper.insert(user);
24 if(i != 0 && i != null){
25 return "success";
26 }
27 }
28 return null;
29 }
30
31 @Override
32 public List<User> selectAllUser() {
33 //PageHelper.startPage(1, 3);
34 List<User> list = userMapper.selectAllUser();
35 return list;
36 }
37 }

 

注意:在实验的时候务必要在启动类上加上MapperScna注解,指定扫描mapper文件,或者可以在每个mapper文件上加mapper注解,不过这样太麻烦了: 

SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件的更多相关文章

  1. SpringBoot 添加mybatis generator 自动生成代码插件

    自动生成数据层代码,提高开发效率 1.pom添加插件,并指定配置文件路径 <!-- mybatis generator 自动生成代码插件 --> <plugin> <gr ...

  2. idea中mybatis generator自动生成代码配置 数据库是sqlserver

    好长时间没有写博客了,最近公司要用java语言,开始学习java,属于初学者,今天主要记录一下mybatis generator自动生成代码,首先在如下图的目录中新建两个文件,如下图 generato ...

  3. IDEA Maven Mybatis generator 自动生成代码

    IDEA Maven Mybatis generator 自动生成代码 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP ...

  4. IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)

    IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...

  5. 使用Mybatis Generator自动生成代码

    MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器.它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码.它将内省数据库 ...

  6. Mybatis generator 自动生成代码(2)

    最近准备开始做一个项目,需要开始手动创建sql,于是将Mybatis generator 工具功能强化了下. 首先,这里引入到版本一点的包 <dependency> <groupId ...

  7. Mybatis generator 自动生成代码

    开发项目的时候,表很多,是不可能一点点的自己去写xml ,dao文件的,这里就需要用到代码的自动生成工具了. 第一步:导入jar包,当然,这之前,基本环境,像mybatis,数据库之类的都得搭建好. ...

  8. IDEA使用mybatis generator自动生成代码

    主要就三步: 1.pom 文件中引入jar包并配置 build 属性 <dependencies> <!-- 自动生产mapper Begin! --> <depende ...

  9. mybatis generator自动生成代码时 只生成了insert 而没有其他的

    mybatis框架提供了非常好用的逆向工程插件,但是在使用过程中会有很多问题. 我在使用中就遇到了只生成insert和insertSeletive方法,而不生成其他根据primary key查询更新删 ...

随机推荐

  1. VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)

    上一节中鸡啄米主要讲的是画笔CPen的用法,前面也说了,GDI对象中最常用的就是画笔和画刷,本节就讲讲画刷CBrush. 鸡啄米依然是通过实例的方式来说明画刷的用法.此实例要实现的功能是,对话框上有一 ...

  2. Python 让PIP源使用国内镜像,提升下载速度和安装成功率

    对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成 ...

  3. 教你如何用Nginx搭建一个安全的、快速的微服务架构

    今天我们要谈论微服务以及如何使用Nginx构建一个快速的.安全的网络系统.最后,我们将向您展示一个使用Fabric模式如何非常快速和轻松地构建一个微服务的demo. 在我们探讨Fabric模式之前,我 ...

  4. COOKIE与SESSION、Django的用户认证、From表单

    一.COOKIE 与 SESSION 1.简介 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. ...

  5. c++ 11开始语言本身和标准库支持并发编程

    c++ 11开始语言本身和标准库支持并发编程,意味着真正要到编译器从语言和标准库层面开始稳定,估计得到17标准出来.14稳定之后的事情了,根据历史经验,新特性的引入到稳定被广泛采用至少要一个大版本的跨 ...

  6. JSmpeg-用JavaScript编写的视频播放器

    使用说明:https://github.com/phoboslab/jsmpeg ffmpeg -i rtmp://abc/ccc/111 -f mpegts -codec:v mpeg1video ...

  7. phpMyAdmin本地文件包含漏洞

    4 phpMyAdmin本地文件包含漏洞 4.1 摘要 4.1.1 漏洞简介 phpMyAdmin是一个web端通用MySQL管理工具,上述版本在/libraries/gis/pma_gis_fact ...

  8. dp练习 2016.2.24

    很经典的一道状压dp(似乎叫做旅行商问题),用f[i][s]表示在到达点i,已经经过的城市用二进制表示为s,于是方程就很简单了: f[i][s] = min { f[j][s ^ (1 << ...

  9. CodeForces 471D MUH and Cube Walls -KMP

    Polar bears Menshykov and Uslada from the zoo of St. Petersburg and elephant Horace from the zoo of ...

  10. 在Windows下搭建Android开发环境及遇到的问题

    转载1:http://www.cnblogs.com/xdp-gacl/p/4322165.html 转载2:http://www.cnblogs.com/zoupeiyang/p/4034517.h ...