网上教程大多教人新建一个带对应组件的项目,本文记录如何在一个已有springboot2.x项目中,配置使用mybatisplus来访问mysql。包括使用wrapper和自己写mapper.xml的自定义函数两种和数据库交互的方式。
关于项目的创建,参考创建springboot 2.x web空项目(IDEA),本文使用的项目即为按该链接创建的空项目。
项目配置前提:需要一个配置好的MySQL数据库,并建立相应的角色和数据表。
实现内容:1.通过wrapper实现的增删改查;2.通过自定义mapper.xml实现的通过id查找数据。
打开需要操作的项目,这里打开了一个空项目,项目文件结构如图所示。
在pom.xml中添加依赖,添加位置是Dependencies标签之间,添加内容如下
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.5.4</version></dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <scope>runtime</scope></dependency>
- <!--lombok-->
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>1.18.24</version>
- <scope>provided</scope>
- </dependency>
可修改版本号为自己喜欢的版本(删除现有版本号会自动提示),其中若发现程序有错需要改回来!!!加好之后的样子
在application.yml中添加相关配置,数据库的IP端口、用户名、密码需要换成自己的。mapper-locations中的classpath指的是resource文件夹,添加完成之后有爆红,需要重新加载项目。
- spring:
- datasource:
- url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=GMT%2B8
- username: root
- password: root
- driver-class-name: com.mysql.cj.jdbc.Driver
- #
- mybatis-plus:
- mapper-locations: classpath:mapper/*.xml #对应mapper映射xml文件所在路径
- type-aliases-package: com.example.demo.entity #对应实体类路径
添加完成之后内容如下(仅使用简单的wrapper而不自定义一些数据库的方法的话,mapper-locations不要也可以)
在资源管理器右键项目名,在maven子选项中选择重新加载项目。
最终效果就是yml文件中刚刚爆红的内容不爆红了,就不放图了。
提前说明:本文使用了一个名为user的表,表里只有id和name两个字段。项目本身带有demos.web的文件夹,里面也有user相关的内容,这和本文内容无关,本文内容是直接在demo目录下创建的,选择的时候别选错了。
在demo下新建文件夹entity并在里面新建实体类User.java,输入内容如下
- @Data
- public class User {
- private int id;
- private String name;
- }
结果如下
在demo下新建文件夹mapper并新建接口UserMapper
由于增删改查使用的是BaseMapper类写好的方法,可以通过wrapper直接调用。因此这里只需要写出按id查数据这个自定义的数据接口就可以了,如果仅使用wrapper相关的内容,可以不用做这一步。
mapper文件夹下的UserMapper接口类新增内容如下
List finduserbyid(int id);
在resource下新建mapper文件夹,并新建usermapping.xml,添加以下内容。xml的对齐功能比较难用,可能需要手工对齐成自己喜欢的样子。
- "1.0" encoding="UTF-8"?>
- "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
"com.example.demo.mapper.UserMapper"> -
- select * from user where id = #{id}
-
其中UserService内容为,其中前四个增删改查用的,最后一个为自定义查询函数用的,可以按需要删减。
- package com.example.demo.service;
-
- import com.example.demo.entity.User;
-
- import java.util.List;
-
- public interface UserService {
- public String add(String name);
- public List
query(); - public String update(int id, String name);
- public String delete(int id);
- public List
finduserbyid(int id); - }
userServiceImpl内容为
- package com.example.demo.service.Impl;
-
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
- import com.example.demo.entity.User;
- import com.example.demo.mapper.UserMapper;
- import com.example.demo.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- import java.util.List;
-
- @Service
- public class UserServiceimpl implements UserService {
-
- @Autowired
- private UserMapper userMapper;
-
-
- public String add(String name) {
- User user = new User();
- user.setName(name);
-
- userMapper.insert(user);
-
- return "操作成功";
- }
-
- public List
query() { - LambdaQueryWrapper
queryWrapper = new LambdaQueryWrapper<>(); -
- return userMapper.selectList(queryWrapper);
- }
-
- public String update(int id, String name) {
- LambdaUpdateWrapper
updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(User::getName, name);
- updateWrapper.eq(User::getId, id);
- userMapper.update(updateWrapper);
-
- return "操作成功";
- }
-
- public String delete(int id) {
- LambdaQueryWrapper
queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(User::getId, id);
-
- userMapper.delete(queryWrapper);
-
- return "操作成功";
- }
-
- public List
finduserbyid(int id) { - return userMapper.finduserbyid(id);
- }
- }
serviceimpl对应了service里面定义的函数,实际截图不放了,有点长,反正一样的。。。
demo目录下创建controller文件夹,并创建UserController
添加内容
- package com.example.demo.controller;
-
- import com.example.demo.entity.User;
- import com.example.demo.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
-
- import java.util.List;
-
- @RestController
- @RequestMapping("myuser")
- public class UserController {
-
- @Autowired
- public UserService userService;
-
- @PostMapping(value = "add")
- public String add(@RequestParam(value = "name") String name) {
- return userService.add(name);
- }
-
- @GetMapping(value = "query")
- public List
query() { - return userService.query();
- }
-
- @PostMapping(value = "update")
- public String update(@RequestParam(value = "id") int id, @RequestParam(value = "name") String name) {
- return userService.update(id, name);
- }
-
- @PostMapping(value = "delete")
- public String delete(@RequestParam(value = "id") int id) {
- return userService.delete(id);
- }
-
- @GetMapping(value = "find")
- public List
finduserbyid(@RequestParam(value = "id") int id){ - return userService.finduserbyid(id);
- }
- }
在主程序加
@MapperScan("com.example.demo.mapper")
右键DemoApplication运行,并通过浏览器访问localhost:8080/myuser/query
看到数据库中随便插入的数据。
通过访问localhost:8080/myuser/find?id=1可以看到查询的结果