1.配置文件
################################
###### #####
###### 应用通用配置 #####
###### #####
################################
spring:
# 应用名称
application:
name: MavenDemoProject
# 多环境配置
profiles:
active: dev
# http请求编码配置
http:
encoding:
charset: UTF-8
force: true
enabled: true
# mysql数据库配置
datasource:
# type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
#url,username,password动态配置
url: jdbc:mysql://localhost:3306/test?useUnicode:true&characterEncoding:utf-8
username: root
password: *****
dbcp2:
#最大空闲连接
max-idle: 100
#最小空闲连接
min-idle: 10
#最大连接数
max-total: 200
#最大等待时间
max-wait-millis: 5000
#检测周期 单位毫秒
time-between-eviction-runs-millis: 30000
#连接池足校生存时间
min-evictable-idle-time-millis: 1800000
# test-on-borrow: true
# validation-query: SELECT 1
# test-while-idle: true
# num-tests-per-eviction-run: 100
# redis缓存配置 (暂时没有使用)
redis:
#host,password,port,database动态配置
host: ******
password: ****
port: 6379
database: 0
timeout: 2000
jedis:
pool:
# 连接池中的最大空闲连接
max-idle: 80
# 连接池中的最小空闲连接
min-idle: 1
# 连接池最大连接数(使用负值表示没有限制)
max-active: 80
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10
# mybatis配置
mybatis:
#config-location: classpath:/mybatis-config.xml
type-aliases-package: com.frank.dao.*
mapper-locations: classpath:/mapper/*.xml
configuration:
#延时加载
lazy-loading-enabled: true
map-underscore-to-camel-case: true
use-column-label: true
#开启二级缓存
# cache-enabled: true
# pagehelper分页插件配置
pagehelper:
helper-dialect: mysql
# logback日志配置
2.maven pom
<?xml version="1.0" encoding="UTF-8"?>
<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>1</groupId>
<artifactId>1</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
</parent>
<!--项目编码格式以及JDK版本指定-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!-- Add typical dependencies for a web application -->
<dependencies>
<!--Spring Boot web包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring Boot事务管理-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--Mysql数据库驱动-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
<!--Druid数据连接池-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.5</version>
</dependency>
<!--Mybatis插件-->
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--Mybatis PageHelper分页插件-->
<!--<dependency>-->
<!--<groupId>com.github.pagehelper</groupId>-->
<!--<artifactId>pagehelper-spring-boot-starter</artifactId>-->
<!--<version>1.1.1</version>-->
<!--</dependency>-->
<!-- JASON-->
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!--redis-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>1.5.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>1.5.8.RELEASE</version>
</dependency>
<!--<!– https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis –>-->
<!--<dependency>-->
<!--<groupId>org.springframework.data</groupId>-->
<!--<artifactId>spring-data-redis</artifactId>-->
<!--<version>2.0.2.RELEASE</version>-->
<!--</dependency>-->
<!--redis的java版本的客户端实现-->
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!--alibaba.fastjson-->
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.41</version>
</dependency>
</dependencies>
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- Add Spring repositories -->
<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
3.Dao 层
package com.weixin.dao.student;
import com.weixin.model.Student;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper //映射xml文件
@Repository("studentMapper")
public interface StudentMapper {
/**
* 根据id获取Student对象
* @param id
* @return
*/
Student get(int id);
/**
* 更新Student对象
* @param student
* @return
*/
void update(Student student);
}
4.Dao 映射 mapper 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="com.weixin.dao.student.StudentMapper">
<!--开启二级缓存-->
<!--<cache type=""/>-->
<select id="get" resultType="com.weixin.model.Student">
SELECT * FROM student
WHERE id = #{id}
</select>
<update id="update" parameterType="com.weixin.model.Student">
UPDATE student SET
name = #{name}
WHERE id = #{id}
</update>
</mapper>
5.Service 层测试可写可不写
package com.weixin.service.student;
import com.weixin.model.Student;
public interface StudentService {
Student get(int id);
void update(Student model);
int delete(int id);
}
6.controller层
package com.weixin.controller;
import com.alibaba.fastjson.JSONObject;
import com.weixin.model.Student;
import com.weixin.service.student.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //spring boot 标志controller 注解
@RequestMapping("/test")
public class SpringBootTest {
@Autowired
private StudentService studentService;
@RequestMapping("/one")
public JSONObject test() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "hello world!");
return jsonObject;
}
/**
* 根据id获取对象
*
* @param id
* @return
*/
@GetMapping("/{id}") //spring boot RESTFUL
public JSONObject get(@PathVariable("id") int id) {
Student student = studentService.get(id);
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", student.getId());
jsonObject.put("age", student.getAge());
jsonObject.put("name", student.getName());
return jsonObject;
}
/**
* 更新对象
*
* @param student
* @return
*/
@RequestMapping("/update")
public String put(Student student) {
studentService.update(student);
return "success";
}
}
7.SpringApplication 启动类(无需tomcat)
package com.weixin;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
public class SpringApplication {
public static void main(String[] args) {
org.springframework.boot.SpringApplication.run(SpringApplication.class, args);
}
}
启动类必须放在所有需要进行扫描的文件外一层,否则无法扫描到
整体结构图:
运行:
mysql Student 表
结果