mybatisplus druid
时间: 2023-10-07 11:02:51 浏览: 41
MybatisPlus是一个基于Mybatis的orm框架,它提供了一系列的增强功能,简化了数据库操作的编码过程。MybatisPlus封装了原生Mybatis的一些复杂操作,提供了更简洁、更强大的API,使开发者可以更快速地进行数据库操作。
Druid是一个高性能、可扩展的数据库连接池。它提供了强大的监控功能,可以实时监控数据库连接的使用情况、慢查询等信息,从而帮助开发者优化数据库性能。Druid还提供了防止恶意攻击的功能,可以过滤SQL注入、XSS等常见攻击方式。
结合使用MybatisPlus和Druid可以进一步简化数据库操作,并且提供了更多的数据库性能监控与优化的功能。在应用开发过程中,可以通过配置集成Druid连接池来管理数据库连接,从而提高数据库连接的效率。同时,可以利用MybatisPlus提供的简洁API进行数据库查询、新增、修改、删除等操作,简化了数据库操作的编码过程。
总的来说,MybatisPlus和Druid都是优秀的开源框架,它们的结合使用可以提供更快速、更方便、更稳定的数据库操作与性能优化。无论是在单机开发还是高并发场景下,都是值得推荐的技术选择。
相关问题
springboot3 mybatisplus druid并配置yml
首先需要添加以下依赖:
```xml
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.7.1</version>
</dependency>
<!-- Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
</dependencies>
```
接下来,在 `application.yml` 文件中添加以下配置:
```yaml
# 数据源配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 5
max-active: 20
test-on-borrow: true
validation-query: SELECT 1 FROM DUAL
# MyBatis Plus 配置
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.example.demo.entity
global-config:
db-config:
id-type: auto
field-strategy: not_null
```
其中 `spring.datasource` 是数据源的配置,可以根据自己的情况修改。`mybatis-plus` 是 MyBatis Plus 的配置,`mapper-locations` 指定了 mapper 文件的位置,`type-aliases-package` 指定了实体类的路径。
最后,在启动类上添加注解 `@MapperScan("com.example.demo.mapper")`,指定 mapper 的扫描路径。
完整的启动类示例:
```java
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
springboot mybatisplus druid mysql怎么多主多从 读写分离
要实现多主多从,读写分离的功能,可以通过使用MybatisPlus和Druid来实现。下面是大致的步骤:
1. 首先需要配置多个数据源,分别对应主库和从库。可以在application.properties或application.yml中配置多个数据源。
2. 在SpringBoot的启动类中,使用@Primary注解指定默认的数据源。
3. 使用Druid来配置数据源,可以通过使用@DataSource注解来指定具体的数据源。
4. 配置MybatisPlus的分页插件和动态数据源插件。分页插件可以使用PaginationInterceptor类,动态数据源插件可以使用DynamicDataSourcePlugin类。
5. 在Mapper接口中,使用@Mapper注解来指定具体的Mapper类,同时使用@DataSource注解来指定具体的数据源。
6. 在Service层中,可以通过使用@Transactional注解来实现事务管理。
下面是一个简单的配置示例:
```java
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.master")
public DataSource masterDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.slave")
public DataSource slaveDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
public DataSource dynamicDataSource(@Qualifier("masterDataSource") DataSource masterDataSource,
@Qualifier("slaveDataSource") DataSource slaveDataSource) {
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DynamicDataSourceEnum.MASTER.getValue(), masterDataSource);
targetDataSources.put(DynamicDataSourceEnum.SLAVE.getValue(), slaveDataSource);
DynamicDataSource dynamicDataSource = new DynamicDataSource();
dynamicDataSource.setTargetDataSources(targetDataSources);
dynamicDataSource.setDefaultTargetDataSource(masterDataSource);
return dynamicDataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dynamicDataSource) throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dynamicDataSource);
sqlSessionFactoryBean.setPlugins(new Interceptor[]{
new PaginationInterceptor(),
new DynamicDataSourcePlugin()
});
return sqlSessionFactoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
```
```java
public enum DynamicDataSourceEnum {
MASTER("master"),
SLAVE("slave");
private String value;
DynamicDataSourceEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
```
```java
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
public @interface DataSource {
DynamicDataSourceEnum value() default DynamicDataSourceEnum.MASTER;
}
```
```java
public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return DynamicDataSourceContextHolder.getDataSource();
}
}
```
```java
public class DynamicDataSourceContextHolder {
private static final ThreadLocal<DynamicDataSourceEnum> CONTEXT_HOLDER = new ThreadLocal<>();
public static void setDataSource(DynamicDataSourceEnum dataSource) {
CONTEXT_HOLDER.set(dataSource);
}
public static DynamicDataSourceEnum getDataSource() {
return CONTEXT_HOLDER.get();
}
public static void clearDataSource() {
CONTEXT_HOLDER.remove();
}
}
```
```java
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@DataSource(DynamicDataSourceEnum.MASTER)
@Override
public void addUser(User user) {
userMapper.insert(user);
}
@DataSource(DynamicDataSourceEnum.SLAVE)
@Override
public User getUser(Long id) {
return userMapper.selectById(id);
}
}
```
这样就可以实现多主多从,读写分离的功能了。