MyBatis-Plus与Druid配置结合使用方法详细解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1391个文字,预计阅读时间需要6分钟。
Mybatis-Plus 配置说明:
1.Maven 依赖:添加 velocity-engine-core 模板依赖(如无需代码生成功能,可不添加此依赖)
xml com.baomidou mybatis-plus-boot-starter 版本号Mybatis-Plus的配置
1.Maven插件
velocity-engine-core是mybatis-plus自动生成代码所依赖的模板(不用自动生成代码功能可不用)
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.6</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version> </dependency>
2.application.properties配置
和普通mysql配置相同,没有额外配置
#mysql 连接配置 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
3.Mapper相关注解
@MapperScan中直接mapper文件所在的package
@SpringBootApplication @EnableTransactionManagement @EnableEurekaClient @MapperScan("com.example.demo.dao") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
4.创建数据库表
略
5.创建JavaBean(推荐使用Lombok插件方式) - Model层
@Data @TableName("area") @ToString(callSuper=true, includeFieldNames=true) @AllArgsConstructor @NoArgsConstructor public class Area implements Serializable{ private static final long serialVersionUID = 1L; private String id; private String name; private int sort; }
6.创建Mapper - DAO层
只有自定义SQL时,mapper中才有内容, 使用mybatis-plus自带CRUD语句或者构造器拼接语句时, mapper通常为空
public interface AreaMapper extends BaseMapper<Area> { //通过mybatis-plus提供的注解,直接自定义SQL @Select("select name from area where sort > ${sort}") List<String> getBySort2(@Param("sort")int sort); }
8.创建逻辑接口 - Service层
public interface IAreaService { public Area getById(String id); public List<Area> selectAll(); public int updateByPrimaryKeySelective(Area record); public int deleteByPrimaryKey(String id); public int insertSelective(Area record); public List<Area> getBySort(); public List<String> getBySort2(int sort); }
9.创建逻辑类 - Service层
Mybatis-Plus使用SQL的3种常见方法:
a. 使用mybatis-plus自带CRUD方法: 直接用mapper的自带方法
b. 使用mybatis-plus提供的条件构造器,拼接where条件
c. 使用@Select,@Update等注解, 自己写SQL+参数
@Service public class AreaServiceImpl implements IAreaService { @Autowired public AreaMapper areaMapper; //使用mybatis-plus自带CRUD方法 @Override public Area getById(String id) { return areaMapper.selectById(id); } @Override public List<Area> selectAll() { return areaMapper.selectList(null); } @Override @Transactional public int updateByPrimaryKeySelective(Area record) { return areaMapper.updateById(record); } @Override public int deleteByPrimaryKey(String id) { return areaMapper.deleteById(id); } @Override public int insertSelective(Area record) { return areaMapper.insert(record); } //使用mybatis-plus提供的条件构造器,拼接条件 @Override public List<Area> getBySort(){ QueryWrapper<Area> queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().gt(Area::getSort, 40) .lt(Area::getSort, 80); return areaMapper.selectList(queryWrapper); } //通过mybatis-plus提供的注解,直接自定义SQL(定义在mapper中) @Override public List<String> getBySort2(int sort){ return areaMapper.getBySort2(sort); } }
10.创建接口 - Controller层
@RestController @RequestMapping("/area") public class AreaController { @Autowired private IAreaService areaService; @Autowired private DbpropertiesService dbproService; @Autowired private Area area; @Resource protected HttpServletRequest request; @RequestMapping(value = "/getAreaInfo",method=RequestMethod.GET) public Area getAreaInfo(@RequestParam(value="id") String id) { area = areaService.getById(id); return area; } @RequestMapping(value = "/getAreaAllInfo",method=RequestMethod.GET) public List<Area> getAreaInfo() { List<Area> arlist = areaService.selectAll(); return arlist; } @RequestMapping(value ="/updateAreaName",method=RequestMethod.PUT) public int updateAreaInfo(@RequestParam(value="id") String id,@RequestParam(value="name",required=false) String name,@RequestParam(value="sort",required=false) Integer sort) { area.setId(id); area.setName(name); area.setSort(sort); int ar = areaService.updateByPrimaryKeySelective(area); return ar; } @RequestMapping(value ="/deleteAreaName",method=RequestMethod.DELETE) public int deleteAreaInfo(@RequestParam(value="id") String id) { int ar = areaService.deleteByPrimaryKey(id); return ar; } // @RequestMapping(value ="/insertAreaName",method=RequestMethod.POST) // public int insertAreaInfo(@RequestParam(value="id") String id,@RequestParam(value="name",required=false) String name,@RequestParam(value="sort",required=false) Integer sort) { // area.setId(id); // area.setName(name); // area.setSort(sort); // int ar = areaService.insertSelective(area); // return ar; // } @RequestMapping(value ="/insertAreaName",method=RequestMethod.POST) public int insertAreaInfo(@RequestBody Area area) { int ar = areaService.insertSelective(area); return ar; } @RequestMapping(value ="/selectBySort",method=RequestMethod.GET) public List<Area> selectAreaSort() { List<Area> arList = areaService.getBySort(); return arList; } @RequestMapping(value ="/selectBySort2",method=RequestMethod.GET) public List<String> selectAreaSort2(@RequestParam(value="sort") int sort) { List<String> arList = areaService.getBySort2(sort); return arList; } }
参考文档:
mp.baomidou.com/
数据源datasource
数据源是数据库连接的规范接口
Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是:
org.apache.tomcat.jdbc.pool.DataSource
com.zaxxer.hikari.HikariDataSource
org.apache.commons.dbcp.BasicDataSource
org.apache.commons.dbcp2.BasicDataSource
在不指定数据源类型时, SpringBoot默认使用tomcat.jdbc
如果需要使用第三方数据源, 比如Druid, 步骤如下:
Druid的配置
1.Maven配置
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.3</version> </dependency>
2.application.properties配置
spring.datasource.type需要指定为Druid spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
其他的Druid自有属性,可以写在properties中也可以写在Druid的配置类中
@ConfigurationProperties(prefix = "spring.datasource") public class DruidConfiguration { private String url; private String username; private String password; private String driverClassName; private int initialSize = 5; private int minIdle = 5; private int maxActive = 10; private int maxWait = 2; private int timeBetweenEvictionRunsMillis = 1000 * 60; private int minEvictableIdleTimeMillis = 1000 * 60 * 30; private String validationQuery; private boolean testWhileIdle = false; private boolean testOnBorrow = true; private boolean testOnReturn = false; private boolean poolPreparedStatements = false; private int maxPoolPreparedStatementPerConnectionSize = -1; private String filters; private boolean useGlobalDataSourceStat = false; private String connectionProperties;
3.定义数据源
@Configuration @ConfigurationProperties(prefix = "spring.datasource") public class DataSource2Config { private String url; private String username; private String password; @Bean public DataSource getDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setUsername(username);// 用户名 dataSource.setPassword(password);// 密码 return dataSource; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
4.配置Druid的监控器和为事务管理器指定Druid数据源, 最终Configuration文件如下:
Druid监控配置:
ServletRegistrationBean
FilterRegistrationBean
事务管理器配置:
PlatformTransactionManager
package com.example.demo.dao.druid;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
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 org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.localhost:8092/druid/index.html
到此这篇关于MyBatis-Plus+Druid配置及应用详解的文章就介绍到这了,更多相关MyBatis-Plus Druid配置内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!
本文共计1391个文字,预计阅读时间需要6分钟。
Mybatis-Plus 配置说明:
1.Maven 依赖:添加 velocity-engine-core 模板依赖(如无需代码生成功能,可不添加此依赖)
xml com.baomidou mybatis-plus-boot-starter 版本号Mybatis-Plus的配置
1.Maven插件
velocity-engine-core是mybatis-plus自动生成代码所依赖的模板(不用自动生成代码功能可不用)
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.6</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version> </dependency>
2.application.properties配置
和普通mysql配置相同,没有额外配置
#mysql 连接配置 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
3.Mapper相关注解
@MapperScan中直接mapper文件所在的package
@SpringBootApplication @EnableTransactionManagement @EnableEurekaClient @MapperScan("com.example.demo.dao") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
4.创建数据库表
略
5.创建JavaBean(推荐使用Lombok插件方式) - Model层
@Data @TableName("area") @ToString(callSuper=true, includeFieldNames=true) @AllArgsConstructor @NoArgsConstructor public class Area implements Serializable{ private static final long serialVersionUID = 1L; private String id; private String name; private int sort; }
6.创建Mapper - DAO层
只有自定义SQL时,mapper中才有内容, 使用mybatis-plus自带CRUD语句或者构造器拼接语句时, mapper通常为空
public interface AreaMapper extends BaseMapper<Area> { //通过mybatis-plus提供的注解,直接自定义SQL @Select("select name from area where sort > ${sort}") List<String> getBySort2(@Param("sort")int sort); }
8.创建逻辑接口 - Service层
public interface IAreaService { public Area getById(String id); public List<Area> selectAll(); public int updateByPrimaryKeySelective(Area record); public int deleteByPrimaryKey(String id); public int insertSelective(Area record); public List<Area> getBySort(); public List<String> getBySort2(int sort); }
9.创建逻辑类 - Service层
Mybatis-Plus使用SQL的3种常见方法:
a. 使用mybatis-plus自带CRUD方法: 直接用mapper的自带方法
b. 使用mybatis-plus提供的条件构造器,拼接where条件
c. 使用@Select,@Update等注解, 自己写SQL+参数
@Service public class AreaServiceImpl implements IAreaService { @Autowired public AreaMapper areaMapper; //使用mybatis-plus自带CRUD方法 @Override public Area getById(String id) { return areaMapper.selectById(id); } @Override public List<Area> selectAll() { return areaMapper.selectList(null); } @Override @Transactional public int updateByPrimaryKeySelective(Area record) { return areaMapper.updateById(record); } @Override public int deleteByPrimaryKey(String id) { return areaMapper.deleteById(id); } @Override public int insertSelective(Area record) { return areaMapper.insert(record); } //使用mybatis-plus提供的条件构造器,拼接条件 @Override public List<Area> getBySort(){ QueryWrapper<Area> queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().gt(Area::getSort, 40) .lt(Area::getSort, 80); return areaMapper.selectList(queryWrapper); } //通过mybatis-plus提供的注解,直接自定义SQL(定义在mapper中) @Override public List<String> getBySort2(int sort){ return areaMapper.getBySort2(sort); } }
10.创建接口 - Controller层
@RestController @RequestMapping("/area") public class AreaController { @Autowired private IAreaService areaService; @Autowired private DbpropertiesService dbproService; @Autowired private Area area; @Resource protected HttpServletRequest request; @RequestMapping(value = "/getAreaInfo",method=RequestMethod.GET) public Area getAreaInfo(@RequestParam(value="id") String id) { area = areaService.getById(id); return area; } @RequestMapping(value = "/getAreaAllInfo",method=RequestMethod.GET) public List<Area> getAreaInfo() { List<Area> arlist = areaService.selectAll(); return arlist; } @RequestMapping(value ="/updateAreaName",method=RequestMethod.PUT) public int updateAreaInfo(@RequestParam(value="id") String id,@RequestParam(value="name",required=false) String name,@RequestParam(value="sort",required=false) Integer sort) { area.setId(id); area.setName(name); area.setSort(sort); int ar = areaService.updateByPrimaryKeySelective(area); return ar; } @RequestMapping(value ="/deleteAreaName",method=RequestMethod.DELETE) public int deleteAreaInfo(@RequestParam(value="id") String id) { int ar = areaService.deleteByPrimaryKey(id); return ar; } // @RequestMapping(value ="/insertAreaName",method=RequestMethod.POST) // public int insertAreaInfo(@RequestParam(value="id") String id,@RequestParam(value="name",required=false) String name,@RequestParam(value="sort",required=false) Integer sort) { // area.setId(id); // area.setName(name); // area.setSort(sort); // int ar = areaService.insertSelective(area); // return ar; // } @RequestMapping(value ="/insertAreaName",method=RequestMethod.POST) public int insertAreaInfo(@RequestBody Area area) { int ar = areaService.insertSelective(area); return ar; } @RequestMapping(value ="/selectBySort",method=RequestMethod.GET) public List<Area> selectAreaSort() { List<Area> arList = areaService.getBySort(); return arList; } @RequestMapping(value ="/selectBySort2",method=RequestMethod.GET) public List<String> selectAreaSort2(@RequestParam(value="sort") int sort) { List<String> arList = areaService.getBySort2(sort); return arList; } }
参考文档:
mp.baomidou.com/
数据源datasource
数据源是数据库连接的规范接口
Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是:
org.apache.tomcat.jdbc.pool.DataSource
com.zaxxer.hikari.HikariDataSource
org.apache.commons.dbcp.BasicDataSource
org.apache.commons.dbcp2.BasicDataSource
在不指定数据源类型时, SpringBoot默认使用tomcat.jdbc
如果需要使用第三方数据源, 比如Druid, 步骤如下:
Druid的配置
1.Maven配置
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.3</version> </dependency>
2.application.properties配置
spring.datasource.type需要指定为Druid spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
其他的Druid自有属性,可以写在properties中也可以写在Druid的配置类中
@ConfigurationProperties(prefix = "spring.datasource") public class DruidConfiguration { private String url; private String username; private String password; private String driverClassName; private int initialSize = 5; private int minIdle = 5; private int maxActive = 10; private int maxWait = 2; private int timeBetweenEvictionRunsMillis = 1000 * 60; private int minEvictableIdleTimeMillis = 1000 * 60 * 30; private String validationQuery; private boolean testWhileIdle = false; private boolean testOnBorrow = true; private boolean testOnReturn = false; private boolean poolPreparedStatements = false; private int maxPoolPreparedStatementPerConnectionSize = -1; private String filters; private boolean useGlobalDataSourceStat = false; private String connectionProperties;
3.定义数据源
@Configuration @ConfigurationProperties(prefix = "spring.datasource") public class DataSource2Config { private String url; private String username; private String password; @Bean public DataSource getDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setUsername(username);// 用户名 dataSource.setPassword(password);// 密码 return dataSource; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
4.配置Druid的监控器和为事务管理器指定Druid数据源, 最终Configuration文件如下:
Druid监控配置:
ServletRegistrationBean
FilterRegistrationBean
事务管理器配置:
PlatformTransactionManager
package com.example.demo.dao.druid;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
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 org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.localhost:8092/druid/index.html
到此这篇关于MyBatis-Plus+Druid配置及应用详解的文章就介绍到这了,更多相关MyBatis-Plus Druid配置内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

