SpringBoot第二天

SpringBoot-第二天

1.学习目标

1.Mybatis整合&数据访问

2.Swagger2 文档工具

3.热部署

4.单元测试

5.分布式缓存Ehcache集成与使用

6.Quartz定时调度集成

7.全局异常与事务控制

8.数据校验-validation

2.Mybatis整合&数据访问

使用SpringBoot开发企业项目时,持久层数据访问是前端页面数据展示的基础,SpringBoot支持市面上常见的关系库产品(Oracle,Mysql,SqlServer,DB2等)对应的相关持久层框架,当然除了对于关系库访问的支持,也支持当下众多的非关系库(Redis,Solr,MongoDB等)数据访问操作,这里主要介绍SpringBoot集成Mybatis并实现持久层数据基本增删改查操作.

2.1.SpringBoot整合Mybatis
2.1.1.环境整合配置

Idea下创建Maven普通工程springboot_mybatis

pom.xml添加核心依赖

<properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <maven.compiler.source>1.8</maven.compiler.source>
 <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.2.2.RELEASE</version>
</parent>
<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <!-- mybatis 集成 -->
 <dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>2.1.1</version>
 </dependency>
 <!-- springboot 分⻚插件 -->
 <dependency>
 <groupId>com.github.pagehelper</groupId>
 <artifactId>pagehelper-spring-boot-starter</artifactId>
 <version>1.2.13</version>
 </dependency>
 <!-- mysql 驱动 -->
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 </dependency>
 <!-- c3p0 数据源 -->
 <dependency>
 <groupId>com.mchange</groupId>
 <artifactId>c3p0</artifactId>
 <version>0.9.5.5</version>
 </dependency>
</dependencies>
<build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>
 </plugins>
</build>

application.yml整合配置

server:
 # 设置项⽬启动的端⼝号
 port: 8080
 # 设置项⽬的访问路径(上下⽂路径)
 servlet:
 context-path: /springboot_mybatis
## 数据源配置
spring:
 datasource:
 type: com.mchange.v2.c3p0.ComboPooledDataSource
 driver-class-name: com.mysql.cj.jdbc.Driver
 url: jdbc:mysql://127.0.0.1:3306/springboot_mybatis?
useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
 username: root
 password: root
## mybatis 配置
mybatis:
 mapper-locations: classpath:/mappers/*.xml
 type-aliases-package: com.xxxx.springboot.po
 configuration:
 ## 下划线转驼峰配置
 map-underscore-to-camel-case: true
## pageHelper
agehelper:
 helper-dialect: mysql
## 显示dao 执⾏sql语句
logging:
 level:
 com:
 xxxx:
 springboot:
 dao: debug

2.1.2.源代码添加

JavaBean对象定义

package com.xxxx.springboot.po;
public class User {
   
 private Integer id;
 private String userName;
 private String userPwd;
 public Integer getId() {
   
 return id;
 }
 public void setId(Integer id) {
   
 this.id = id;
 }
 public String getUserName() {
   
 return userName;
 }
 public void setUserName(String userName) {
   
 this.userName = userName;
 }
 public String getUserPwd() {
   
 return userPwd;
 }
 public void setUserPwd(String userPwd) {
   
 this.userPwd = userPwd;
 }
}

Dao层接口方法定义

com.xxxx.springboot.dap包下创建UserMapping.java接口声明查询方法

package com.xxxx.springboot.dao;
import com.xxxx.springboot.po.User;
public interface UserMapper {
   
 // 根据⽤户名查询⽤户记录
 User queryUserByUserName(String userName);
}

SQL映射文件添加

resource/mappers目录下添加UserMapper.xml配置,查询statetment

<?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.xxxx.springboot.dao.UserMapper">
 <select id="queryUserByUserName" parameterType="string"
resultType="com.xxxx.springboot.po.User">
 select
 id,user_name,user_pwd
 from tb_user
 where user_name=#{userName}
 </select>
</mapper>

添加service,controller对应代码

UserService.java

@Service
public class UserService {
   
 
 @Autowired
 private UserMapper userMapper;
 public User queryUserByUserName(String userName){
   
 return userMapper.queryUserByUserName(userName);
 }
}

UserController.java

@RestController
public class UserController {
   
 @Resource
 private UserService userService;
 @GetMapping("user/{userName}")
 public User queryUserByUserName(@PathVariable String userName){
   
 return userService.queryUserByUserName(userName);
 }
}

添加应用启动入口

@SpringBootApplication
@MapperScan("com.xxxx.springboot.dao")
public class Starter {
   
 public static void main(String[] args) {
   
 SpringApplication.run(Starter.class);
 }
}
2.1.3.启动测试

运行Starter main方法,启动应用浏览器测试查询

2.2.SpringBoot数据访问操作

完成SpringBoot与Mybatis集成后,接下来以用户表为实例实现一套用户模块基本数据维护.

2.2.1查询操作

2.1.1.1.接口方法定义

UserMapper 接⼝添加查询的⽅法

public interface UserMapper {
   
 // 通过⽤户ID查询⽤户
 public User queryById(Integer id);
}
2.2.1.2.映射文件配置
<?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.xxxx.springboot.dao.UserMapper">
 <select id="queryById" parameterType="int"
 resultType="com.xxxx.springboot.po.User">
 select
 *
 from
 	tb_user
 where
 	id = #{id,jdbcType=INTEGER}
 </select>
</mapper>
2.2.1.3.UserService
@Service
public class UserService {
   
 @Resource
 private UserMapper userMapper;
 /**
 * 通过⽤户ID查询⽤户
 * @param id
 * @return
 */
 public User queryById(Integer id){
   
 return userMapper.queryById(id);
 }
}
2.2.1.4.UserController
@RestController
public class UserController {
   
 @Resource
 private UserService userService;
 /**
 * 根据⽤户ID查询⽤户对象
 * @param userId
 * @return
 */
 @GetMapping("user/{userId}")
 public User queryUserByUserId(@PathVariable Integer userId){
   
 return userService.queryById(userId);
 }
}

2.2.2.添加操作

2.2.2.1.接口方法定义
public interface UserMapper {
   
 // 添加⽤户
 public int save(User user);
}
2.2.2.2.映射文件配置
<?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.xxxx.springboot.dao.UserMapper">
 
 <insert id="save" parameterType="com.xxxx.springboot.po.User">
 insert into
	 tb_user
 		(user_name,user_pwd)
 values
		 (#{userName},#{userPwd})
 </insert>
 
</mapper>
2.2.2.3.添加commons-log3依赖

如果需要使用StringUtils工具类,需要引入commons-lang3依赖.

<dependency>
	 <groupId>org.apache.commons</groupId>
	 <artifactId>commons-lang3</artifactId>
</dependency>
2.2.2.4.AssertUtil工具类
package com.xxxx.springboot.utils;
import com.xxxx.springboot.exceptions.ParamsException;
public class AssertUtil {
   
 /**
 * 判断结果是否为true
 * 如果结果为true,抛出异常
 * @param userName
 * @return
 */
 public static void isTrue(Boolean flag, String msg){
   
 if(flag){
   
 throw new ParamsException(msg);
 }
 }
}
2.2.2.5.ParamsException自定义异常
package com.xxxx.springboot.exceptions;
/**
* ⾃定义参数异常
*/
public class ParamsException extends RuntimeException {
   
 private Integer code = 300;
 private String msg = "参数异常!";
 public ParamsException() {
   
 super("参数异常!");
 }
 public ParamsException(String msg) {
   
 super(msg);
 this.msg = msg;
 }
 public ParamsException(Integer code) {
   
 super("参数异常!");
 this.code = code;
 }
 public ParamsException(Integer code, String msg) {
   
 super(msg);
 this.code = code;
 this.msg = msg;
 }
  public Integer getCode() {
   
 return code;
 }
 public void setCode(Integer code) {
   
 this.code = code;
 }
 public String getMsg() {
   
 return msg;
 }
 public void setMsg(String msg) {
   
 this.msg = msg;
 }
}

2.2.2.6.UserService

@Service
public class UserService {
   
 @Resource
 private UserMapper userMapper;
 /**
 * 添加⽤户
 * @param user
 */
 public void saveUser(User user) {
   
 AssertUtil.isTrue(StringUtils
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值