目录
阅读本文大概需要 10 分钟。
1. Mybatis简介
- Mybatis框架是一个开源的持久层框架,它对传统的JDBC操作数据库的方法做了进一步的封装,使用时不需要我们程序猿自己来创建连接、释放连接等操作。只需配置好mybatis的配置文件就可以灵活使用了。
2. Mybatis的优缺点
- 优点
- (1)与传统JDBC方法相比的话,减少代码编写
- (2)mybatis是一个轻量级的持久层框架
- (3)上手简单,学习成本低
- (4)将sql语句的权利交给程序员本身
- …
3. 使用案例
3.1 创建数据库表
可参考之前发过的一篇文章 tk-mybatis-generator逆向生成代码 。生成对应的实体对象、mapper文件和mapper接口。
3.2 新增依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<!-- 通用mapper逆向工具 -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
这里我就解释一下依赖的作用。
mysql-connector-java
:相当于mysql-connector-java-5.7.22.jarmybatis-spring-boot-starter
:springboot整合mybatis所需依赖spring-boot-starter-web
:web模块
3.3 配置文件
server:
port: 8081
spring:
datasource: # 数据源相关配置
url: jdbc:mysql://localhost:3306/ifknow?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver # mysql驱动
type: com.zaxxer.hikari.HikariDataSource # 数据源类型:HikariCP
hikari:
connection-timeout: 30000 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒
minimum-idle: 5 # 最小连接数
maximum-pool-size: 15 # 最大连接数
auto-commit: true # 自动提交
idle-timeout: 600000 # 连接超时的最大时长(毫秒),超时则被释放(retired),默认:10分钟
pool-name: DateSourceHikariCP # 连接池名字
max-lifetime: 1800000 # 连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms
connection-test-query: SELECT 1
profiles:
############################################################
#
# mybatis 配置
#
############################################################
mybatis:
type-aliases-package: com.ifknow.pojo # 所有POJO类所在包路径
mapper-locations: classpath:mapper/*.xml,mapper/*/*.xml # mapper映射文件
############################################################
#
# mybatis mapper 配置
#
############################################################
# 通用 Mapper 配置
mapper:
mappers: com.ifknow.my.MyMapper
not-empty: false #在进行数据库操作的时候,判断表达式 username !=null,是否追加 username!=''
identity: MYSQL
3.4 启动类新增MapperScan注解
package com.ifknow;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
/**
* @author ifknow
*/
@SpringBootApplication
@MapperScan(basePackages = "com.ifknow.mapper")
public class SpringBootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMybatisApplication.class, args);
}
}
3.5 编写controller、service
package com.ifknow.controller;
import com.ifknow.pojo.bo.UserInsertBO;
import com.ifknow.pojo.bo.UserUpdateBO;
import com.ifknow.pojo.model.User;
import com.ifknow.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author: ifknow <br>
* @Date: 2020/8/19 15:58 <br>
* @Description: NO Description
*/
@RestController
@RequestMapping("/user")
public class UseController {
@Autowired
private UserService userService;
@PostMapping("/insert")
public String insert(@RequestBody UserInsertBO bo) {
int i = userService.insert(bo);
if (i == 0) {
return "error";
}
return "success";
}
@DeleteMapping("/delete")
public String delete(@RequestParam String id) {
int i = userService.delete(id);
if (i == 0) {
return "error";
}
return "success";
}
@PutMapping("/update")
public String update(@RequestBody UserUpdateBO bo) {
int i = userService.update(bo);
if (i == 0) {
return "error";
}
return "success";
}
@GetMapping("/pageInfo")
public List<User> pageInfo(){
return userService.pageInfo();
}
}
package com.ifknow.service;
import com.ifknow.pojo.bo.UserInsertBO;
import com.ifknow.pojo.bo.UserUpdateBO;
import com.ifknow.pojo.model.User;
import java.util.List;
/**
* @Author: ifknow <br>
* @Date: 2020/8/19 16:00 <br>
* @Description: NO Description
*/
public interface UserService {
/**
* 新增用户
*
* @param bo 用户信息
* @return
*/
int insert(UserInsertBO bo);
/**
* 删除用户
*
* @param id 用户id
* @return
*/
int delete(String id);
/**
* 更新用户信息
*
* @param bo 用户信息
* @return
*/
int update(UserUpdateBO bo);
/**
* 查询用户列表
*
* @return
*/
List<User> pageInfo();
}
package com.ifknow.service.impl;
import com.ifknow.mapper.UserMapper;
import com.ifknow.pojo.bo.UserInsertBO;
import com.ifknow.pojo.bo.UserUpdateBO;
import com.ifknow.pojo.model.User;
import com.ifknow.service.UserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
/**
* @Author: ifknow <br>
* @Date: 2020/8/19 16:01 <br>
* @Description: NO Description
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public int insert(UserInsertBO bo) {
User user = new User();
BeanUtils.copyProperties(bo, user);
user.setId(UUID.randomUUID().toString().replace("-", ""));
return userMapper.insertSelective(user);
}
@Override
public int delete(String id) {
User user = new User();
user.setId(id);
return userMapper.deleteByPrimaryKey(user);
}
@Override
public int update(UserUpdateBO bo) {
User user = new User();
BeanUtils.copyProperties(bo, user);
return userMapper.updateByPrimaryKeySelective(user);
}
@Override
public List<User> pageInfo() {
return userMapper.selectAll();
}
}
以上就是使用tk-mybatis在SpringBoot中简单使用。tk-mybatis 其他方法可以自己去慢慢的了解,谢谢你的观看!!