您的位置 首页 java

springboot整合mybatis增删改查(四):完善增删改查整合swgger2

接下来就是完成增删改查的功能了,首先在config包下配置Druid数据连接池,在配置之前先把相关配置在application.preperties中完善

application.preperties

# 下面为连接池的补充设置,应用到上面所有数据源中

# 初始化大小,最小,最大

spring.datasource.initialSize=5

spring.datasource.minIdle=5

spring.datasource.maxActive=30

# 配置获取连接等待超时的时间

spring.datasource.maxWait=60000

# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

spring.datasource.timeBetweenEvictionRunsMillis=60000

# 配置一个连接在池中最小生存的时间,单位是毫秒

spring.datasource.minEvictableIdleTimeMillis=300000

spring.datasource.validationQuery=SELECT 1 FROM DUAL

spring.datasource.testWhileIdle=true

spring.datasource.testOnBorrow=false

spring.datasource.testOnReturn=false

# 打开PSCache,并且指定每个连接上PSCache的大小

spring.datasource.poolPreparedStatements=true

spring.datasource.maxPoolPreparedStatementPerConnectionSize=20

# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,’wall’用于防火墙

spring.datasource.filters=stat,wall,log4j

# 通过connectProperties属性来打开mergeSql功能;慢SQL记录

spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

# 合并多个DruidDataSource的监控数据

spring.datasource.useGlobalDataSourceStat=true

# Druid 监控 Servlet 配置参数

spring.datasource.druidRegistrationUrl: /druid/*

spring.datasource.resetEnable: true

spring.datasource.loginUsername: admin

spring.datasource.loginPassword: 1234

# Druid 监控过滤相关配置参数

spring.datasource.filtersUrlPatterns: /*

spring.datasource.exclusions: ‘*.js,*.gif,*.jpg,*.jpeg,*.png,*.css,*.ico,*.jsp,/druid/*’

spring.datasource.sessionStatMaxCount: 2000

spring.datasource.sessionStatEnable: true

spring.datasource.principalSessionName: session_user_key

spring.datasource.profileEnable: true

#druid datasouce database settings end

上面配置完之后开始完成Druid数据连接池配置

DruidDBConfig类

@Configuration
public class DruidDBConfig {
 // private Logger logger = LoggerFactory.getLogger(DruidDBConfig.class);
 @Value("${spring.datasource.driver-class-name}")
 private String driverClassName;
 @Value("${spring.datasource.url}")
 private String dbUrl;
 @Value("${spring.datasource.username}")
 private String username;
 @Value("${spring.datasource.password}")
 private String password;
 @Value("${spring.datasource.initialSize}")
 private int initialSize;
 @Value("${spring.datasource.minIdle}")
 private int minIdle;
 @Value("${spring.datasource.maxActive}")
 private int maxActive;
 @Value("${spring.datasource.maxWait}")
 private int maxWait;
 @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
 private int timeBetweenEvictionRunsMillis;
 @Value("${spring.datasource.minEvictableIdleTimeMillis}")
 private int minEvictableIdleTimeMillis;
 @Value("${spring.datasource.validationQuery}")
 private String validationQuery;
 @Value("${spring.datasource.testWhileIdle}")
 private boolean testWhileIdle;
 @Value("${spring.datasource.testOnBorrow}")
 private boolean testOnBorrow;
 @Value("${spring.datasource.testOnReturn}")
 private boolean testOnReturn;
 @Value("${spring.datasource.poolPreparedStatements}")
 private boolean poolPreparedStatements;
 @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
 private int maxPoolPreparedStatementPerConnectionSize;
 @Value("${spring.datasource.filters}")
 private String filters;
 @Value("{spring.datasource.connectionProperties}")
 private String connectionProperties;
 @Bean //声明其为Bean实例
 @Primary //在同样的DataSource中,首先使用被标注的DataSource
 public DataSource dataSource(){
 DruidDataSource datasource = new DruidDataSource();
 datasource.setUrl(this.dbUrl);
 datasource.setUsername(username);
 datasource.setPassword(password);
 datasource.setDriverClassName(driverClassName);
 //configuration
 datasource.setInitialSize(initialSize);
 datasource.setMinIdle(minIdle);
 datasource.setMaxActive(maxActive);
 datasource.setMaxWait(maxWait);
 datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
 datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
 datasource.setValidationQuery(validationQuery);
 datasource.setTestWhileIdle(testWhileIdle);
 datasource.setTestOnBorrow(testOnBorrow);
 datasource.setTestOnReturn(testOnReturn);
 datasource.setPoolPreparedStatements(poolPreparedStatements);
 datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
 try {
 datasource.setFilters(filters);
 } catch (SQLException e) {
 // logger.error("druid configuration initialization filter", e);
 }
 datasource.setConnectionProperties(connectionProperties);
 return datasource;
 }
}
 

上述配置中的日志已经注释了,如果需要配置可以在resources中加入logback-spring.xml:

resources->logback-spring.xml

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
 <contextName>logback</contextName>
 <!--自己定义一个log.path用于说明日志的输出目录-->
 <property name="log.path" value="/log/jiangfeixiang/"/>
 <!--输出到控制台-->
 <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
 <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
 < level >ERROR</level>
 </filter>-->
 <encoder>
 <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
 </encoder>
 </appender>
 <!--输出到文件-->
 <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 <fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern>
 </rollingPolicy>
 <encoder>
 <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
 </encoder>
 </appender>
 <root level="debug">
 <appender-ref ref="console"/>
 <appender-ref ref="file"/>
 </root>
 <!-- logback为java中的包 -->
 <logger name="com.example.springboootmybatis.controller"/>
</configuration>
 

UserServiec接口

public interface UserService {
 /**
 * 查询所有用户
 */ public List<User> getAllUser();
 /**
 * 保存用户
 * @param user
 */ void saveUser(User user);
 /**
 * 根据id查询用户
 */ User getById(Integer id);
 /**
 * 校验用户名
 * @param userName
 * @return
 */ Boolean checkUserName(String userName);
 /**
 * 修改用户
 * @param user
 */ void updateUser(User user);
 /**
 * 根据id删除用户
 * @param id
 */ void deleteUser(Integer id);
 /**
 * 全选删除
 * @param useridList
 */ void deleteBatchUser(List<Integer> useridList);
}
 

UserServiceImpl实现类

@Service
@Transactional
public class UserServiceImpl implements UserService {
 //注入
 @Autowired
 private UserMapper userMapper;
 /**
 * 查询所有用户
 */ @ Override 
 public List<User> getAllUser() {
 List<User> users = userMapper.selectByExample(null);
 return users;
 }
 /**
 * 根据id查询用户
 */ @Override
 public User getById(Integer id) {
 User user = userMapper.selectByPrimaryKey(id);
 return user;
 }
 /**
 * 添加用户
 * @param user
 */ @Override
 public void saveUser(User user) {
 userMapper.insertSelective(user);
 }
 /**
 * 校验用户名是否存在
 * @param userName
 * @return
 * 数据库没有这条记录,count==0,返回true
 */ @Override
 public Boolean checkUserName(String userName) {
 UserExample example=new UserExample();
 UserExample.Criteria criteria=example.createCriteria();
 criteria.andUsernameEqualTo(userName);
 long count=userMapper.countByExample(example);
 if(count==0){
 return true;
 }
 return false;
 }
 /**
 * 修改用户
 * @param user
 */ @Override
 public void updateUser(User user) {
 userMapper.updateByPrimaryKeySelective(user);
 }
 /**
 * 根据id删除(单个)
 * @param id
 */ @Override
 public void deleteUser(Integer id) {
 userMapper.deleteByPrimaryKey(id);
 }
 /**
 * 批量删除
 * @param useridList
 */ @Override
 public void deleteBatchUser(List<Integer> useridList) {
 /* UserExample example=new UserExample();
 UserExample.Criteria criteria=example.createCriteria();
 criteria.andUseridIn(useridList);
 userMapper.deleteByExample(example);*/ }
}
 

UserController

@RestController
@RequestMapping(value = "/user")
public class UserController {
 //注入
 @Autowired
 private UserService userService;
 /**
 * 查询所有用户
 */ @ApiOperation(value="获取用户列表")
 @RequestMapping(value = "/user",method = RequestMethod.GET)
 public List<User> getListAll(){
 List<User> listAll = userService.getAllUser();
 return listAll;
 }
 /**
 * 用户保存
 * @return
 */ @ApiOperation(value = "添加用户",notes = "根据user添加用户")
 @ApiImplicitParam(name = "user",value = "用户user",required = true,dataType = "User")
 @RequestMapping(value = "/users",method = RequestMethod.POST)
 public String saveUser(@RequestBody User user){
 userService.saveUser(user);
 return "success";
 }
 /**
 * 根据id查询
 */ @ApiOperation(value = "根据id查询")
 @ApiImplicitParam(name = "id",value = "用户id")
 @RequestMapping(value = "/{id}",method = RequestMethod.GET)
 public User getById(@PathVariable("id") Integer id){
 User user = userService.getById(id);
 return user;
 }
 /**
 * 校验用户名
 * @param username
 * @return
 */ @ApiOperation(value = "校验用户名")
 @ApiImplicitParam(name = "userName",value = "用户名",required = true,dataType = "String")
 @RequestMapping(value = "/{username}",method = RequestMethod.POST)
 public Boolean checkUserName(@PathVariable("username")String username){
 Boolean aboolean = userService.checkUserName(username);
 if (aboolean){
 return true;
 }else {
 return false;
 }
 }
 /**
 * 修改用户
 * @param user
 */ @ApiOperation(value = "修改用户")
 @ApiImplicitParam(name = "user",value = "用户",required = true,dataType = "User")
 @RequestMapping(value = "/user",method = RequestMethod.PUT)
 public String updateUser(@RequestBody User user){
 userService.updateUser(user);
 return "success";
 }
 /**
 * 根据id删除用户
 */ @ApiOperation(value = "根据id删除用户")
 @ApiImplicitParam(name = "id",value = "用户id",required = true,dataType = "Integer")
 @RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
 public String deleteUser(@PathVariable Integer id){
 userService.deleteUser(id);
 return "success";
 }
}
 

controller类中使用了swgger2如下:

springboot中整合swgger2

pom .xml

<!--swgger2-->
 <dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger2</artifactId>
 <version>2.2.2</version>
 </dependency>
 <dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger-ui</artifactId>
 <version>2.2.2</version>
 </dependency>
 

springbootmybatis包下创建SwaggerConfig.java

SwaggerConfig

@Configuration
@EnableSwagger2
public class SwaggerConfig {
 @Bean
 public Docket createRestApi() {
 ApiInfo apiInfo = new ApiInfoBuilder()
 .title("使用Swagger2构建RESTful APIs") //标题
 .description("客户端与服务端接口文档") //描述
 .termsOfServiceUrl("") //域名地址
 .contact("姜飞祥") //作者
 .version("1.0.0") //版本号
 .build();
 return new Docket(DocumentationType.SWAGGER_2)
 .apiInfo(apiInfo)
 .select()
 .apis(RequestHandlerSelectors.basePackage("com.example.springbootmybatis"))
 .paths(PathSelectors.any())
 .build();
 }
}
 

以上就算完成了,写的不好请见谅。具体测试请参考下面的springboot整合swgger2,之后访问即可,和

备注:

  • springboot整合swgger2参考:
  • MyBatis的Mapper接口以及Example的实例函数及详解:
  • Mybatis Generator最完整配置详解:

文章来源:智云一二三科技

文章标题:springboot整合mybatis增删改查(四):完善增删改查整合swgger2

文章地址:https://www.zhihuclub.com/182919.shtml

关于作者: 智云科技

热门文章

网站地图