mybatis1—基本搭建(springboot版)
1.首先搭建简单的springboot
创建项目过程省略。
springboot主要是有三个文件,
1.pom文件(maven依赖),
2.application.properties或application.yml(配置文件,两个文件的配置方式各不相同,具体方式自行查找),
3.Application.java(启动类文件)
1.导入maven依赖
<?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>org.example</groupId>
<artifactId>springboot_mybatis_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath />
</parent>
<properties>
<!-- 设置编码为 UTF-8 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 设置jdk为1.8 -->
<java.version>1.8</java.version>
<spring-boot.version>1.5.9.RELEASE</spring-boot.version>
<!--Lombok-->
<lombok.version>1.16.20</lombok.version>
</properties>
<dependencies>
<!-- Lombok依赖 -->
<!-- 作用:方便实体类bean快速生成get set等方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- springboot集成junit起步依赖 -->
<!-- 作用:可以进行用junit进行单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 整合springMVC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
2.创建yml文件
这里采用通过 spring.profiles.active=dev 来使用不同环境下的配置,即通用配置yml文件引用dev的yml配置文件
1.创建application.yml
#spring
spring:
profiles:
# 区分不同配置环境
active: dev
devtools:
restart:
# 热部署是否生效,true为生效,false为失效
enabled: false
application:
# 应用程序名称
name: mybatisdemo
2.创建application-dev.yml
#app
server:
# 配置程序端口,默认为 8080
port: 8084
# 配置项目访问路径
context-path: /mybatisDemo
#logging
logging:
pattern:
# 设置日志级别;如果设置为 WARN ,则低于 WARN 的信息都不会输出。这种方式只能将日志打印在控制台上
level: warn
3.创建Application.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4.创建controller类测试
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/userTab")
public class UserTabController {
@GetMapping("/test")
@ResponseBody
public List<String> getTestList(){
List<String> list = new ArrayList<>();
list.add("测试");
return list;
}
}
5.url调用结果
6.整体代码架构
PS:
(1)类文件要放在跟启动类同级或者下一目录下,本项目为:com.huajia包下面。因为springboot默认扫描加载启动类同级或者下级目录的标签类(@RestController,@Service ,@Configuraion,@Component等),假如真需要加载其他目录的标签类,可以通过在启动上配置标签@ComponentScan(具体包)来进行扫描加载。
(2)资源文件默认放到resources下面,templates默认放的是动态文件,比如:html文件,不过要搭配thymeleaf 使用
2.开始springboot搭建mybatis
1.导入mybatis相关依赖(在springboot基础依赖下添加以下依赖)
<!-- springboot集成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>
<!-- Druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
2.配置yml文件(在springboot基础配置下添加以下配置)
#spring
spring:
devtools:
restart:
enabled: false
# 数据库连接配置
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatisdemo?useUnicode=true&characterEncoding=utf-8
username: root
password: root
druid:
# 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
initialSize: 20
# 最小连接池数量
minIdle: 20
# 最大连接池数量
maxActive: 300
# 配置获取连接等待超时的时间
maxWait: 10000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 验证连接有效与否的SQL,不同的数据配置不同
validationQuery: select 1
# 建议配置为true,不影响性能,并且保证安全性。
# 申请连接的时候检测,如果空闲时间大于
# timeBetweenEvictionRunsMillis,
# 执行validationQuery检测连接是否有效。
testWhileIdle: true
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
# 这里建议配置为TRUE,防止取到的连接不可用
testOnBorrow: true
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnReturn: false
# 是否缓存preparedStatement,也就是PSCache。
# PSCache对支持游标的数据库性能提升巨大,比如说oracle。
# 在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
# 作者在5.5版本中使用PSCache,通过监控界面发现PSCache有缓存命中率记录,
# 该应该是支持PSCache。
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 属性类型是字符串,通过别名的方式配置扩展插件,
# 常用的插件有:
# 监控统计用的filter:stat
# 日志用的filter:log4j
# 防御sql注入的filter:wall
filters: stat
# 访问的用户名
loginUsername: ason
# 访问的密码
loginPassword: ason
#mybatis
mybatis:
mapper-locations: classpath*:mapper/**/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.huajia.entity
typeEnumsPackage: com.huajia.*
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
id-type: 2
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 1
#驼峰下划线转换
db-column-underline: false
#刷新mapper 调试神器
refresh-mapper: true
#数据库大写下划线转换
#capital-mode: true
#序列接口实现类配置
key-generator: com.baomidou.mybatisplus.incrementer.H2KeyGenerator
#逻辑删除配置(下面3个配置)
logic-delete-value: 0
logic-not-delete-value: 1
#自定义sql注入器
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
# SQL 解析缓存,开启后多租户 @SqlParser 注解生效
sql-parser-cache: true
configuration:
map-underscore-to-camel-case: false
cache-enabled: false
3.创建相关类
创建包entity、mapper、service。resources下创建mapping文件夹,用于写sql语句。
1.创建entity类UserTab
@Data
public class UserTab {
private Integer userId;
private String userAccount;
private String userName;
private String password;
}
2.创建service类
service接口类IUserTabService
public interface IUserTabService {
}
service实现类UserTabServiceImpl
@Service
public class UserTabServiceImpl implements IUserTabService {
}
3.创建mapper类UserTabMapper
@Repository
public interface UserTabMapper {
}
4.创建mapper的UserTabMapper.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.huajia.mapper.UserTabMapper" >
</mapper>
4.创建controller方法测试
@RestController
@RequestMapping("/userTab")
public class UserTabController {
@Autowired
private IUserTabService userTabService;
@GetMapping("/getUserList")
@ResponseBody
public List<UserTab> getUserList(){
return userTabService.getUserList();
}
}
5.url调用结果
6.整体代码架构
3.相关源码
地址:https://gitee.com/lin8081/springboot_mybatis_demo