Springboot项目搭建

第一步 新建springboot项目

通过idea新建项目,选择Spring Initializr,其他可以默认,点击Next即可。

New Project

如下图自定义 Group 和 Artifact、选好项目类型,通常使用Maven Project,语言java,打包方式,springboot我选择使用 jar 包方式。

New Project

选择几个常用的依赖,后期可根据需要自行添加。

New Project

选择项目存储位置。

New Project

第二步 添加基本配置文件

配置数据源、mybatis 和 druid

1、在pom.xml中添加以下依赖

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>

2、在application.properties中添加数据源及 druid配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
server.port=8080
spring.datasource.url=jdbc:mysql://( 填写数据库所在的主机IP ):3306/( 填写数据库名称 )
spring.datasource.username=username(填写数据库用户名)
spring.datasource.password=password(填写密码)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#druid配置
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters=stat,wall,logback
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.useGlobalDataSourceStat=true
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#spring.datasource.schema=sql文件路径,可以直接建表
#mybatis 配置
mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:com/example/demo/**/*Mapper.xml

也可以是yml格式的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
server:
port: 8080
spring:
datasource:
username: username
password: password
url: jdbc:mysql://( 填写你的数据库所在主机ip ):3306/( 填写数据名称 )
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,logback
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
# schema:
# - classpath:sql/user.sql

# mybatis 配置
mybatis:
config-location: classpath:mybatis-config.xml
mapper-locations: classpath:com/example/demo/**/*Mapper.xml

3、在 resources 文件夹下新建 mybatis-config.xml,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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>

<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="aggressiveLazyLoading" value="false"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="defaultExecutorType" value="REUSE"/>
<setting name="defaultStatementTimeout" value="25000"/>
<setting name="logImpl" value="STDOUT_LOGGING"/>
<setting name="callSettersOnNulls" value="true"/>
</settings>

</configuration>

4、在 pom.xml 中添加 mybatis.generator 插件,可以根据generatorConfig.xml配置文件生成 mybatis 映射、model层、dao层和 mapper层。

1
2
3
4
5
6
7
8
9
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>

generatorConfig.xml配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?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>
<!-- 配置mysql 驱动jar包路径.用了绝对路径 -->
<classPathEntry location="C:\Users\JingXi\.m2\repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar"/>

<context id="wangyongzhi_mysql_tables" targetRuntime="MyBatis3">
<!-- 防止生成的代码中有很多注释,加入下面的配置控制 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
<property name="suppressDate" value="true" />
</commentGenerator>

<!-- 数据库连接 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://192.168.31.128:3306/copyrightblock?useUnicode=true;characterEncoding=UTF-8"
userId="copyrightblock"
password="123456">
</jdbcConnection>

<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>

<!-- 数据表对应的model层 -->
<javaModelGenerator targetPackage="com.example.demo.model" targetProject="src">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>

<!-- sql mapper 映射配置文件 -->
<sqlMapGenerator targetPackage="com.example.demo.mapper" targetProject="src">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>

<!-- mybatis3中的mapper接口 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.dao" targetProject="src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>

<!-- 数据表进行生成操作 schema:相当于库名; tableName:表名; domainObjectName:对应的DO -->
<table schema="test" tableName="test_user" domainObjectName="TestUser"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>

</context>
</generatorConfiguration>

注意classPathEntry location的路径,配置好后可以运行插件即可生成三层结构,之后自行追加 service和 serviceimp。

注意:要在主类DemoApplication中添加注解@MapperScan扫描到 dao层接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.example.demo.dao")
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}

}

出现 target中没有 mapper.xml解决办法,在pom.xml中的 built 中插入下面配置

1
2
3
4
5
6
7
8
9
<resources>
<!-- mapper.xml文件在java目录下 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>

druid的管理界面,需要添加一个 DruidConfig.java类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.example.demo.common.druidconfig;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
* Author: Jankin
* Date:2019/2/21
* Description:
*/
@Configuration
public class DruidConfig {

@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}

//配置Druid的监控
//1、配置一个管理后台的Servlet
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String,String> initParams = new HashMap<>();

initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
initParams.put("allow","");//默认就是允许所有访问
initParams.put("deny","192.168.15.21");

bean.setInitParameters(initParams);
return bean;
}


//2、配置一个web监控的filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());

Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.css,/druid/*");

bean.setInitParameters(initParams);

bean.setUrlPatterns(Arrays.asList("/*"));

return bean;
}
}

启动项目后访问http://localhost:8080/druid/# 可以进入以下界面:

New Project

输入配置的账号密码后进入界面

New Project

第三步 可以写代码了

补充建表sql文件,在运行mybatis.generator插件之前先把表建好

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE ttai_user (
id BIGINT NOT NULL auto_increment COMMENT '主键id',
user_account VARCHAR(20) NOT NULL COMMENT '用户账号',
user_pwd VARCHAR(50) NOT NULL COMMENT '账号id表,新注册用户的record_id',
user_nickname VARCHAR(50) NOT NULL COMMENT '用户',
user_email VARCHAR(320) NOT NULL COMMENT '用户邮箱地址',
del_sign INT NOT NULL DEFAULT 0 COMMENT '0:未删除 1:已删除',
create_tx_stamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
lastup_tx_stamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY ( id )
);

写了个小接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.example.demo.controller;

import com.example.demo.common.Result;
import com.example.demo.model.TtaiUser;
import com.example.demo.service.TtaiUserService;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
* Author: Jankin
* Date:2019/2/21
* Description:
*/
@RestController
public class TestContrller {

private final TtaiUserService ttaiUserService;

@Autowired
public TestContrller(TtaiUserService ttaiUserService) {
this.ttaiUserService = ttaiUserService;
}

@PostMapping("/test")
public String add(@RequestParam("account") String account,
@RequestParam("pwd") String pwd){
TtaiUser user = new TtaiUser();
user.setUserAccount(account);
user.setUserPwd(pwd);
user.setUserNickname("null");
user.setUserEmail("null");
this.ttaiUserService.insertSelective(user);
return new Gson().toJson(new Result());
}
}

成功运行

New Project

发起一个post请求看看效果:

New Project
New Project

不小心点了两次没有做用户名唯一性校验,所以插入了两条一样的数据。

这是项目地址https://github.com/jingxizhu/springbootbuild

下回分享使用通用mapper~

文章目录
  1. 1. 第一步 新建springboot项目
    1. 1.1. 通过idea新建项目,选择Spring Initializr,其他可以默认,点击Next即可。
    2. 1.2. 如下图自定义 Group 和 Artifact、选好项目类型,通常使用Maven Project,语言java,打包方式,springboot我选择使用 jar 包方式。
    3. 1.3. 选择几个常用的依赖,后期可根据需要自行添加。
    4. 1.4. 选择项目存储位置。
  2. 2. 第二步 添加基本配置文件
    1. 2.1. 配置数据源、mybatis 和 druid
  3. 3. 第三步 可以写代码了
    1. 3.1. 这是项目地址https://github.com/jingxizhu/springbootbuild
|