项目结构
准备工作
数据库准备:在开始项目之前我们需要在数据库中创建一个数据库,再创建我们后面需要用的的数据库表。现在市场上数据库可视化工具有很多,选择一个自己喜欢的就可以,我使用的是Navicat下载地址[
- 创建数据库:打开Navicat链接本地数据库
- 创建数据库:双击本地数据库打开链接,在本地数据库右键选择创建数据库,数据库名称为spring-demo,字符集选择 uf8,排序规则选择 utf8_general_ci。
- 创建数据表:双击打开创建的数据库spring-demo,在创建的数据库下面找到 ‘表’,在表上右键选择新建表 user。
-- 建表语句
CREATE TABLE `user` (
`id` int(20) NOT NULL AUTO_INCREMENT com MENT '主键ID',
`name` varchar(50) DEFAULT NULL COMMENT '姓名',
`age` int(10) DEFAULT NULL COMMENT '年龄',
`sex` varchar(10) DEFAULT NULL COMMENT '性别',
`birthday` date DEFAULT NULL COMMENT '生日',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 在表中新增三条数据
-- 新增数据sql语句
INSERT INTO `user` VALUES (1, '张三', 25, '男', '1994-08-08');
INSERT INTO `user` VALUES (2, '李四', 18, '女', '2003-08-08');
INSERT INTO `user` VALUES (3, '王五', 20, '男', '1999-07-01');
到此我们数据库就准备完成了。
项目搭建
- 我们使用maven进行项目的基础搭建。开发工具使用的是IDEA,JDK版本使用的是1.8.
- 首先打开IDEA创建项目spring-mybatisplus-demo。在打开的界面中选择Create New Project.
- 选择maven进行创建项目
- 在界面中填写GroupId、ArtifiactId和Version(版本号)
- 在界面中确认项目名称和项目存放路径,点击finish进行确认
- 在打开的项目中创建com.mgm.springdemo包结构。并在springdemo下依次创建controller(存放视图层接口)、domain(存放实体类)、service(存放业务层接口)、impl(存放业务层接口实现类)
- 在src/main/resources目录下创建mapper文件夹,用于存放mapper.xml文件
引入依赖
- 在打开的项目中打开 pom .xml文件,引入spring-boot作为父依赖
<parent>
<groupId> org .springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2. RELEASE </version>
<relativePath/>
</parent>
- 在下方依次添加sprig-web、spring-test、 mysql 驱动、druid数据库连接池、mybatis-plus、lombok依赖
<!--完整pom文件-->
<?xml version="1.0" encoding="UTF-8"?>
< project xmlns="#34;
xmlns:xsi="#34;
xsi:schemaLocation=" #34;>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mgm.springdemo</groupId>
<artifactId>spring-mybatisplus-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<!--spring-web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring-test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--阿里巴巴数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--lombok工具包,生成gatter/settrt-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<!--maven打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
参数配置
- 在src/main/resources下面创建application.yml配置文件,配置端口、数据库链接信息、mybatis-plus配置信息
# application.yml完整信息
server:
port: 8081 # 配置项目启动端口
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource #连接池使用druid
driver-class-name: com.mysql.cj.jdbc.Driver #数据库链接驱动
url: jdbc:mysql://localhost:3306/spring-demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai #数据库链接地址
username: root # 数据库链接用户名
password: root # 数据库链接密码
mybatis-plus:
global-config:
banner: false #配置关闭mybatis-plus banner
db-config:
id-type: auto #配置主键自增
mapper-locations: classpath:com.mgm.springdemo.mapper/*.xml #配置mapper.xml的位置
type-aliases-package: com.mgm.springdemo.domain #配置开启实体类扫描的包路径
logging:
level:
com.mgm.springdemo.mapper: debug #控制台输出sql语句
功能实现
- 创建启动类:在com.mgm.springdemo下创建SpringDemoApplication启动类,并添加@SpringBootApplication注解和@MapperScan注解配置mybatis要扫描的mapper的包路径
@SpringBootApplication //标识此类是一个SpringApplication的启动类
@MapperScan("com.mgm.springdemo.mapper") // 配置mybatis要扫描的mapper接口所在的包路径
public class SpringDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDemoApplication.class,args);
}
}
- 创建User实体类:在domain下创建User实体类
@Data //lombok注解,生成属性的Getter和Setter方法
@TableName("user")
public class User implements Serializable {
@TableId // 标注此属性与是一个主键字段
private Integer id;
@TableField("name") //标注此属性与数据库的那个字段对应,ru'guo'm如果名称相同可以省略不写
private String name;
private Integer age;
private String sex;
private Date birthday;
}
- 创建UserMapper:在mapper包下创建UserMapper接口,并继承mybatis-plus的BaseMapper,泛型为User
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
- 创建 users ervice,并编写常用增删改查接口
public interface UserService{
// 根据Id查询User
User findUserById(Integer id);
//查询所有User
List<User> findAllUser();
//保存User
User saveUser(User user);
//根据Id更新User
User updateUserById(User user);
//根据Id删除user
void deleteUserById(Integer id);
}
- 创建UserServiceImpl类:在impl包下创建UserServiceImpl实现UserServie接口,并重写UserService接口的方法
@Service //标识此类是UserService接口的一个实现类
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@ Override
public User findUserById(Integer id) {
return userMapper.selectById(id);
}
@Override
public List<User> findAllUser() {
List<User> users = userMapper.selectList(null);
return users;
}
@Override
public User saveUser(User user) {
userMapper.insert(user);
return null;
}
@Override
public User updateUserById(User user) {
userMapper.updateById(user);
return user;
}
@Override
public void deleteUserById(Integer id) {
userMapper.deleteById(id);
}
}
- 创建UserController:在controller包下创建UserController,注入UserService编写视图层接口
@RestController //表示此类是一个controller,并且所有的方法返回json数据
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/{id}")
public User findUserById(@PathVariable("id") Integer id){
User user = userService.findUserById(id);
return user;
}
@GetMapping("/user/list")
public List<User> findAllUser(){
List<User> users = userService.findAllUser();
return users;
}
@PostMapping("/user")
public String saveUser(@RequestBody User user){
user.setId(null); // id是自增长,要把id赋值为null
userService.saveUser(user);
return "保存成功";
}
@PutMapping("/user")
public User updateUser(@RequestBody User user){
User updatedUser = userService.updateUserById(user);
return updatedUser;
}
@DeleteMapping("/user/{id}")
public String deleteUserById(@PathVariable("id") Integer id){
userService.deleteUserById(id);
return "删除成功";
}
}
功能测试
- 运行项目:在启动类上选择运行,注意的是我们配置了启动端口为8081,所以测试的时候就要访问8081端口
- 测试工具:对于后端项目的测试也有很多很好的工具,我个人经常使用的是Postman(下载地址:[具体使用方法大家可以自行百度。
- 测试视图层接口
- 测试根据id查找(查找id为1的用户)。结果如下图
- 测试查询所有用户。查询结果如下图
- 新增用户,结果如下图
- 根据id修改用户信息(修改id为3的用户,修改用户名为李七,性别为女,年龄为35,出生日期不修改)。结果如下图:
- 根据id删除用户(删除id为2的用户),结果如下图:
结束
今天的教程到这里就结束了,感谢您的阅读和支持,也希望能对您有所帮助,喜欢的话请点赞加关注,更多技术会持续更新。