前言:
本片文章采用的是SpringBoot+Mybatis+Swagger2,目的是使用
Mybatis完成增删改查操作。第一部分讲的是通过xml文件进行增删改查操作,第二部分讲解的是通过注解进行增删改查操作。
Mybatis官网(官网内容很详细哦):Mybatis官网
一、增删改查操作(通过XML)
1.Sql语句
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`sex` varchar(6) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`address` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
2.项目结构
image.png3.使用自动生成插件-生成代码
大家可以参考这篇文章,使用EasyCode插件生成代码:EasyCode(代码神器)
需要修改的地方
-
UserDao.java
添加@Mapper注解
image.png -
启动类
添加@MapperScan注解
image.png
4.pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<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>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
5 配置文件
application.yml
spring:
# 数据源
datasource:
# 用户名
username: root
# 密码
password: 123456
# 链接
url: jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
# 驱动
driver-class-name: com.mysql.jdbc.Driver
#mybatis配置
mybatis:
mapper-locations: classpath:mapper/*Dao.xml
#实体扫描,多个package用逗号或者分号分隔
type-aliases-package: com.mb.helo.entity
6、entity
@Data
public class User implements Serializable {
private static final long serialVersionUID = -75231801200113829L;
private Integer id;
private String username;
private String sex;
private Object birthday;
private String address;
private String password;
}
7、dao
@Mapper
public interface UserDao {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
User queryById(Integer id);
/**
* 查询指定行数据
*
* @param offset 查询起始位置
* @param limit 查询条数
* @return 对象列表
*/
List<User> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);
/**
* 通过实体作为筛选条件查询
*
* @param user 实例对象
* @return 对象列表
*/
List<User> queryAll(User user);
/**
* 新增数据
*
* @param user 实例对象
* @return 影响行数
*/
int insert(User user);
/**
* 修改数据
*
* @param user 实例对象
* @return 影响行数
*/
int update(User user);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 影响行数
*/
int deleteById(Integer id);
}
8、service
public interface UserService {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
User queryById(Integer id);
/**
* 查询多条数据
*
* @param offset 查询起始位置
* @param limit 查询条数
* @return 对象列表
*/
List<User> queryAllByLimit(int offset, int limit);
/**
* 新增数据
*
* @param user 实例对象
* @return 实例对象
*/
User insert(User user);
/**
* 修改数据
*
* @param user 实例对象
* @return 实例对象
*/
User update(User user);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Integer id);
}
9、serviceImpl
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
@Override
public User queryById(Integer id) {
return this.userDao.queryById(id);
}
/**
* 查询多条数据
*
* @param offset 查询起始位置
* @param limit 查询条数
* @return 对象列表
*/
@Override
public List<User> queryAllByLimit(int offset, int limit) {
return this.userDao.queryAllByLimit((offset-1)*limit, limit);
}
/**
* 新增数据
*
* @param user 实例对象
* @return 实例对象
*/
@Override
public User insert(User user) {
this.userDao.insert(user);
return user;
}
/**
* 修改数据
*
* @param user 实例对象
* @return 实例对象
*/
@Override
public User update(User user) {
this.userDao.update(user);
return this.queryById(user.getId());
}
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
@Override
public boolean deleteById(Integer id) {
return this.userDao.deleteById(id) > 0;
}
}
10、controller
@RestController
@RequestMapping("user")
public class UserController {
/**
* 服务对象
*/
@Resource
private UserService userService;
/**
* @Description: 根据主键删除
* @params: [id]
* @return: com.mb.helo.entity.User
* @Author: wangxianlin
* @Date: 2020/3/8 5:15 AM
*/
@GetMapping("queryById")
public User queryById(@RequestParam("id") Integer id) {
return this.userService.queryById(id);
}
/**
* @Description: 分页查询用户列表
* @params: [offset, limit]
* @return: java.util.List<com.mb.helo.entity.User>
* @Author: wangxianlin
* @Date: 2020/3/8 5:14 AM
*/
@GetMapping("queryAllByLimit")
public List<User> queryAllByLimit(@RequestParam("offset") int offset,@RequestParam("limit") int limit) {
return this.userService.queryAllByLimit(offset, limit);
}
/**
* @Description: 新增用户
* @params: [user]
* @return: com.mb.helo.entity.User
* @Author: wangxianlin
* @Date: 2020/3/8 5:14 AM
*/
@PostMapping("insert")
public User insert(@RequestBody User user) {
return this.userService.insert(user);
}
/**
* @Description: 修改用户
* @params: [user]
* @return: com.mb.helo.entity.User
* @Author: wangxianlin
* @Date: 2020/3/8 5:14 AM
*/
@PostMapping("update")
public User update(@RequestBody User user) {
this.userService.update(user);
return this.queryById(user.getId());
}
/**
* @Description: 根据主键删除用户
* @params: [id]
* @return: boolean
* @Author: wangxianlin
* @Date: 2020/3/8 5:14 AM
*/
@GetMapping("deleteById")
public boolean deleteById(Integer id) {
return this.userService.deleteById(id);
}
}
11、测试
-
增加
image.png -
分页查询
image.png -
删除
image.png -
根据主键查询
image.png -
修改
image.png
二、增删改查操作(通过注解)
- UserDao.java
/***************************注解方式********************************/
/**
* @Description: 分页查询 -注解方式
* @params: []
* @return: java.util.List<com.mb.helo.entity.User>
* @Author: wangxianlin
* @Date: 2020/3/8 3:39 PM
*/
@Select("select * from user limit #{page} , #{limit}")
List<User> queryAllLimitByAnnotation(@Param("page") int page,@Param("limit") int limit);
/**
* @Description: 根据主键查询 -注解方式
* @params: []
* @return: int
* @Author: wangxianlin
* @Date: 2020/3/8 3:42 PM
*/
@Select("select * from user where id = #{id}")
User getUserByIdAnnotation(@Param("id") int id);
/**
* @Description: 添加 -注解方式
* @params: [user]
* @return: int
* @Author: wangxianlin
* @Date: 2020/3/8 3:53 PM
*/
@Insert(" insert into user (username,sex,birthday,address,password) values(#{username}," +
"#{sex},#{birthday},#{address},#{password}) ")
int insertByAnnotation(User user);
/**
* @Description: 根据主键删除 - 注解方式
* @params: [id]
* @return: int
* @Author: wangxianlin
* @Date: 2020/3/8 3:58 PM
*/
@Delete("delete from user where id = #{id}")
int deleteByAnnotation(@Param("id") int id);
/**
* @Description: 修改
* @params: [user]
* @return: int
* @Author: wangxianlin
* @Date: 2020/3/8 6:53 PM
*/
@PostMapping("updateUserById")
public int updateUserById(@RequestBody User user) {
return this.userService.updateUserById(user);
}
测试
-
分页操作
分页 -
根据主键进行查找
根据主键进行查找 -
根据主键进行删除
根据主键进行删除 -
添加
添加 -
修改
image.png
网友评论