数据库
Hikari+jdbcTemplate+mysql
pom.xml
<!-- 连接池,jdbc,事务相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
yaml
spring:
# 连接源配置
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 333
driver-class-name: com.mysql.jdbc.Driver
# template配置
jdbc:
template:
query-timeout: 3
Druid+jdbcTemplate+mysql
自定义
pom.xml
<!-- 连接池,jdbc,事务相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!-- druid数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.17</version>
</dependency>
yaml
spring:
# 连接源配置
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 333
driver-class-name: com.mysql.jdbc.Driver
# template配置
jdbc:
template:
query-timeout: 3
configuration
@Configuration
public class DataSourceConfiguration {
/**
* 添加druid数据源到容器中
* @return
*/
@Bean
@ConfigurationProperties(value = "spring.datasource")
public DataSource dataSource(){
return new DruidDataSource();
}
/**
* 配置监控页面的Servlet
* @return
*/
@Bean
public ServletRegistrationBean statViewServlet(){
StatViewServlet statViewServlet = new StatViewServlet();
return new ServletRegistrationBean<StatViewServlet>(statViewServlet,"/druid/*");
}
}
tips:
在SpringBoot中想要添加Servlet很简单,写一个配置类,添加ServletRegistrationBean组件即可,该组件创建需要两个参数:Servlet对象及其要映射的路径,添加Filter也是一样的只不过映射路径要用setter方法配置
官方
pom.xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
yaml
spring:
# 连接源配置
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 333
driver-class-name: com.mysql.jdbc.Driver
druid:
aop-patterns: com.atguigu.admin.* #监控SpringBean
filters: stat,wall # 底层开启功能,stat(sql监控),wall(防火墙)
stat-view-servlet: # 配置监控页功能
enabled: true
login-username: admin
login-password: admin
resetEnable: false
web-stat-filter: # 监控web
enabled: true
urlPattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter:
stat: # 对上面filters里面的stat的详细配置
slow-sql-millis: 1000
logSlowSql: true
enabled: true
wall:
enabled: true
config:
drop-table-allow: false
# template配置
jdbc:
template:
query-timeout: 3
Druid+Mybatis+mysql
pom.xml
初始化向导中
<!-- 连接池,jdbc,事务相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!-- druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
<!-- mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
yaml
spring:
# 连接源配置
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 333
driver-class-name: com.mysql.jdbc.Driver
druid:
aop-patterns: com.atguigu.admin.* #监控SpringBean
filters: stat,wall # 底层开启功能,stat(sql监控),wall(防火墙)
stat-view-servlet: # 配置监控页功能
enabled: true
login-username: admin
login-password: admin
resetEnable: false
web-stat-filter: # 监控web
enabled: true
urlPattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter:
stat: # 对上面filters里面的stat的详细配置
slow-sql-millis: 1000
logSlowSql: true
enabled: true
wall: #防火墙
enabled: true
config:
drop-table-allow: false
mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml #sql映射文件位置,只有通过配置写sql才用这样
configuration: #以后我们在这里配置mybatis中configuration要配置的东西
map-underscore-to-camel-case: true
mapper.xml(sql配置文件,和mybatis中相同)
<?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.bianys.demo.mapper.ClientMapper">
<select id="getAll" resultType="com.bianys.demo.domain.Client">
select * from client
</select>
</mapper>
mapper
mapper类需要添加@Mapper注解,也可以在主配置类中添加MapperScan(“包路径”)指定包路径下的类都是mapper
package com.bianys.demo.mapper;
import com.bianys.demo.domain.Client;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
import java.util.List;
@Mapper//这是mapper注解
public interface ClientMapper {
public List<Client> getAll();
}
注解方式
pom.xml与之前相同 yaml可以不写 mapper.xml更不用写 mapper和mybatis中的一样
package com.bianys.demo.mapper;
import com.bianys.demo.domain.Client;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;
import java.util.List;
@Mapper
public interface ClientMapper {
public List<Client> getAll();
@Select(value = "select id from client")
public List<Integer> getAllId();
@Insert("insert into client(`range`) values(#{range})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
public void insertClient(Client client);
}
总结
- 引入mybatis-starter
- 配置application.yaml中,指定mapper-location位置即可
- 编写Mapper接口并标注@Mapper注解
- 简单方法直接注解方式
- 复杂方法编写mapper.xml进行绑定映射
- @MapperScan(“com.atguigu.admin.mapper”) 简化,其他的接口就可以不用标注@Mapper注解
Druid+MybatisPlus+mysql
详细信息请参照官方文档
pom.xml
<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.17</version>
</dependency>
<!-- mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
yaml
同mybatis
mapper、service、serviceImpl
配置好这三个类,xxxxServiceImpl类就具有了大量的对数据库进行操作的方法,当然我们也可以按照mybatis来使用,使用mybatis-plus依然可以随心所欲的使用mybatis
- mapper
package com.bianys.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bianys.demo.bean.User;
//不用配置@Mapper注解
public interface UserMapper extends BaseMapper<User> {
}
- service
public interface UserService extends IService<User> {
}
- serviceImpl
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
自动配置
- MybatisPlusAutoConfiguration 配置类,MybatisPlusProperties 配置项绑定。mybatis-plus:xxx 就是对mybatis-plus的定制
- SqlSessionFactory 自动配置好。底层是容器中默认的数据源
- mapperLocations 自动配置好的。有默认值。classpath*:/mapper/**/*.xml;任意包的类路径下的所有mapper文件夹下任意路径下的所有xml都是sql映射文件。 建议以后sql映射文件,放在 mapper下
- 容器中也自动配置好了 SqlSessionTemplate
- @Mapper 标注的接口也会被自动扫描;建议直接 @MapperScan(“com.atguigu.admin.mapper”) 批量扫描就行
@TableName、TableFiled、@TableId等注解
- @TableName:放在domain类上,指定该类在数据库所对应的表的名称
@TableName("t_user")
public class User {
- @TableFiled:放在属性上,当他的select值为false时,该属性将不会参与数据库的操作
@TableField(select = false)
private String username;
- @TableId() : 放在属性上,他的value值为表中主键的字段名
@TableId("id")
private Integer id;
配置分页
添加配置类即可生效page
// 最新版
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.H2);
//设置当前页面超出是否回滚
paginationInnerInterceptor.setOverflow(true);
//设置请求最大页数
paginationInnerInterceptor.setMaxLimit(500L);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
redis+Lettuce
pom.xml
<!-- redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
yaml
redis:
# 数据库地址
# host: r-bp1bdn6tbx3521mnw2pd.redis.rds.aliyuncs.com
# 数据库密码
# password: 1z2x3c4v5b-
url: redis://:bianys:1z2x3c4v5b-@r-bp1bdn6tbx3521mnw2pd.redis.rds.aliyuncs.com:6379
use
通过Spring导入StringRedisTemplate类,即可通过StringRedisTemplate对象操作redis数据库
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
@SpringBootTest
class DemoApplicationTests {
@Autowired
StringRedisTemplate redisTemplate;
@Test
void contextLoads() {
ValueOperations<String, String> operations = redisTemplate.opsForValue();
operations.set("hello", "helloWorld");
String hello = operations.get("hello");
System.out.println(hello);
}
}
redis+jedis
pom.xml
<!-- redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- jedis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>${jedis.version}</version>
</dependency>
yaml
redis:
# 数据库地址
# host: r-bp1bdn6tbx3521mnw2pd.redis.rds.aliyuncs.com
# 数据库密码
# password: 1z2x3c4v5b-
url: redis://:bianys:1z2x3c4v5b-@r-bp1bdn6tbx3521mnw2pd.redis.rds.aliyuncs.com:6379
clientType: jedis
jedis:
pool:
max-active: 10
use
同Lettuce,Lettuce是默认的操作redis数据库的包