AI摘要
正在生成中...
项目概述
基于 SpringBoot、MySQL 的增删查改
新建项目
- 新建数据库以及表
新建 java 项目
创建项目:
选择 Spring Initializr,选择 java 和 Maven,填写项目名字
SDK 选择 1.8,Java 选择 8
下一步,选择以下的配置:
配置 application.yml 文件
默认是application.properties,自己再新建一个application.yml即可
# 数据库地址spring.datasource.url=jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2b8spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# 自己的数据库名以及密码spring.datasource.username=rootspring.datasource.password=root
# mybatis# 对应的映射文件mybatis.mapper-locations=classpath:mybatis/mapper/*.xml架构
四个软件包:controller、service、mapper、entity
以及一个主应用入口:Application
- controller 对应控制器,用于对接接口的映射
- service 用于业务处理(当然目前比较简单,只作用于一个传递的功能)
- mapper 就是一些增删改查的接口
- entity 实体类,数据库中的每一张表对应于一个实体类(当然,可以有更详细的vo,bo之类的,只不过当前的demo比较简单,就一个数据库对应一个实体类啦)
- resource/mapper 用于编写实际sql的xml的地方
编写代码
先直接上所有文件
编写实体类 User
在包entity下,创建User类,然后提供与数据库对应的字段作为属性,现在使用lombok提供的注解,省略了很多构造方法
package com.lanke.player_demo.entity;
import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;
@Data@NoArgsConstructor@AllArgsConstructor@ToStringpublic class User { private int id; private String name; private String password; private String sex; private int age; private String phone;
}编写 mapper 接口
目前比较简单,只针对了一张表
package com.lanke.player_demo.mapper;
import com.lanke.player_demo.entity.User;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapperpublic interface UserMapper {
List<User> getAllUsers();
int addUser(User user);
int updUserById(User user);
User findUserById(@Param("id") int id);
int delUserById(@Param("id") int id);}编写mapper.xml
文件在 Resource 目录下
<!--记得修改com.lanke.player_demo,每个项目不一样的-->
<?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.lanke.player_demo.mapper.UserMapper">
<!-- public List<User> getAllUsers(); --> <select id="getAllUsers" resultType="com.lanke.player_demo.entity.User"> select * from user </select>
<!-- 添加用户方法 用户id为自增主键,所以这里我们不需要传入id值 --> <insert id="addUser" > insert into user (name,password,sex,age,phone) values (#{name},#{password},#{sex},#{age},#{phone}) </insert>
<!-- 根据用户id进行更新操作 --> <update id="updUserById"> update user set name = #{name}, sex = #{sex}, phone = #{phone}, age = #{age} where id = #{id} </update>
<!-- 根据用户id查询用户详情 --> <select id="findUserById" resultType="com.lanke.player_demo.entity.User"> select * from user where id = #{id} </select>
<!-- 根据id删除用户 --> <delete id="delUserById"> delete from user where id = #{id} </delete></mapper>注意:
- namespace命名空间,要指定你的mapper接口的完整路径
- 增删改查分别对应于四个标签 insert delete update select
- 每个sql对应于你的mapper接口中的方法,我们需要通过id去指定你当前的sql是哪个接口方法的
#{xxx}这是mybatis提供的一种占位符,就是之前sql中学的 ? 占位符resultType结果类型,如果是实体类的话也需要通过指定完整的类路径
编写 service
package com.lanke.player_demo.service;
import com.lanke.player_demo.entity.User;import com.lanke.player_demo.mapper.UserMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;
import java.util.List;
@Servicepublic class UserService {
@Autowired private UserMapper userMapper;
public List<User> getAllUsers(){ return userMapper.getAllUsers(); }
public int addUser(User user){ return userMapper.addUser(user); }
public int updUserById(User user){ return userMapper.updUserById(user); }
public User findUserById(int id){ return userMapper.findUserById(id); }
public int delUserById(int id){ return userMapper.delUserById(id); }}编写 controller
package com.lanke.player_demo.controller;
import com.lanke.player_demo.entity.User;import com.lanke.player_demo.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController@RequestMapping("/user")public class UserController {
@Autowired private UserService userService;
@GetMapping("/list") public List<User> getAllUsers(){ return userService.getAllUsers(); }
@PostMapping("/add") public int addUser(@RequestBody User user){ return userService.addUser(user); }
@PutMapping("/upd") public int updUserById(@RequestBody User user){ return userService.updUserById(user); }
@GetMapping("/find/{id}") public User findUserById(@PathVariable("id") int id){ return userService.findUserById(id); }
@DeleteMapping("/delete/{id}") public int delUserById(@PathVariable("id") int id){ return userService.delUserById(id); }}@RestController 这个注解,可以将你的每个接口的返回值转换为一个json @RequestMapping 用于指定接口的映射规则,这个的话,接着往下看就明白啦。
详情可以参阅:springbootWeb常用注解使用_springboot web 相关注解-CSDN博客
这样一个简单的增删查改就完成了。
但实际的后端开发仅仅这样是不够的,我们还需要写接口等等内容
Maven 配置
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.lanke</groupId> <artifactId>player_demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>player_demo</name> <description>player_demo</description> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.7.6</spring-boot.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <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> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.0</version> </dependency>
<!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <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> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <mainClass>org.lanke.player_demo.PlayerDemoApplication</mainClass> <skip>true</skip> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
</project>MySQL 代码
SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;
-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID', `name` varchar(255) COMMENT '姓名', `password` varchar(255) COMMENT '密码', -- 注意:通常密码不会以明文形式存储,这里仅作示例 `sex` enum('male', 'female', 'other') DEFAULT NULL COMMENT '性别', -- 使用ENUM类型限制性别输入 `age` int DEFAULT NULL COMMENT '年龄', `phone` varchar(20) DEFAULT NULL COMMENT '电话', -- 电话号码通常不需要255个字符那么长 PRIMARY KEY (`id`) -- USING BTREE是多余的,InnoDB默认使用B-Tree索引) ENGINE=InnoDBAUTO_INCREMENT=1 -- 通常从1开始自增,除非有特定原因CHARACTER SET=utf8mb4COLLATE=utf8mb4_unicode_ciCOMMENT='用户信息表'ROW_FORMAT=Dynamic;
-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES (1, '张三', '123456', '男', 25, '18888889999');INSERT INTO `user` VALUES (3, 'robin', '123456', '男', 22, '14424567789');
SET FOREIGN_KEY_CHECKS = 1;常见问题 :
出现依赖爆红错误
解决方法是选择/文件/使缓存失效,重启就可以了
参考资料
简单的增删查改实现
阅读量: --
评论数:--



