原文链接

我们这一篇博客讲的是如何整合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. REST服务安全-双向认证

    1. 创建服务器密钥,其密钥库为 d:/mykeys/server.ks,注意keypass和storepass保持一致,它们分别代表 密钥密码和密钥库密码,注意 CN=localhost 中,loc ...

  2. 网络营销相关缩写名称CPM CPT CPC CPA CPS SEM SEO解析

    网络营销相关缩写名称CPM CPT CPC CPA CPS SEM SEO解析 CPM CPT CPC CPA CPS SEM SEO在网络营销中是什么意思?SEO和SEM的区别是? CPM(Cost ...

  3. WordPress存在DoS拒绝服务漏洞,推荐删除根目录下的xmlrpc.php

    WordPress存在DoS拒绝服务漏洞,推荐删除根目录下的xmlrpc.php受影响的版本:WordPress 3.9.x-3.9.1WordPress 3.8.x-3.8.3WordPress 3 ...

  4. Winform 出现“Win已停止工作”解决方法

    一.错误描述 错误名称如上.整体错误如下: Win已停止工作 二.解决方法: 1.请以管理员身份运行命令:“netsh winsock reset”,重启电脑后再次尝试运行本工具. 2.使用360安全 ...

  5. Linux学习笔记之Linux Centos关闭防火墙

    # Centos6.x /etc/init.d/iptables stop chkconfig iptables off sed -i 's/SELINUX=enforcing/SELINUX=dis ...

  6. SNMP学习笔记之iReasoning MIB Browser

    0x00 MIB Browser iReasoning MIB浏览器是一个强大和易于使用的工具由iReasoning SNMP API提供支持. MIB浏览器是工程师管理启用SNMP的网络设备和应用程 ...

  7. Navicat连不上mysql8

    今天使用navicat连接mysql8,发现错误连连 错误1:1130-Host '192.168.50.2' is not allowed to connect to this MySQL serv ...

  8. Django框架(五) Django之模板语法

    什么是模板 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板 模板语法分类 模板语法之变量:语法为 {{ 变量名 }}: 在 Django 模板中遍历复杂数据结构的关键是句点字 ...

  9. Git 基础 —— 常见使用场景

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 突然插入 Bugifx 工作, ...

  10. git commit如何修改默认编辑器为vim

    答:修改~/.gitconfig(修改这个文件将全局有效)或项目目录中的.git/config(修改此文件只是使当前项目默认使用vim)中增加以下内容: [core] editor=vim