方法二是在方法一的基础上,增加了一个service接口和service实现类
个人理解
servise作用是在mapper上套了一个接口,
数据可以通过接口来调用(原来的是直接通过数据库来调用)。
这样增加了数据的安全性,降低直接从mapper取数据造成的不安全性。
1.项目目录
在方法一的基础上,在java文件夹下再新建一个service包,并且在包下再新建一个Impl类(实现类)
建好的项目目录如下图所示
2.修改原有的代码
1.配置文件等
1.pom.xml
<?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>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>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.6.13</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</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.2.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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>com.example.demo.DemoApplication</mainClass>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2.application.yml
spring:
datasource:
username: root
password: Xblix
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
server:
port: 8081
mybatis:
type-aliases-package: com.example.demo.entity
mapper-locations: classpath:mapper/*.xml
2.原有文件
3.User
package com.example.demo.entity;
public class User {
private int id;
private String name;
private String password;
private String position;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", position='" + position + '\'' +
'}';
}
}
4.UserMapper
package com.example.demo.mapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface UserMapper {
//添加用户
int addUser(User user);
//删除用户
int deleteUserById(int id);
//查询用户(根据id)
User queryUserById(int id);
//查询全部用户
List<User> queryAllUser();
//修改用户
int updateUser(User user);
}
3.新增文件
5.UserService.java
package com.example.demo.service;
import com.example.demo.entity.User;
import java.util.List;
public interface UserService {
//添加用户
int addUser(User user);
//删除用户
int deleteUserById(int id);
//查询用户(根据id)
User queryUserById(int id);
//查询全部用户
List<User> queryAllUser();
//修改用户
int updateUser(User user);
}
6.UserServiceImpl
package com.example.demo.service.impl;//实现service接口
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
UserMapper userMapper;
//添加用户
@Override
public int addUser(User user){
return userMapper.addUser(user);
}
//删除用户
@Override
public int deleteUserById(int id) {
return userMapper.deleteUserById(id);
}
//查询用户(根据id)
@Override
public User queryUserById(int id) {
return userMapper.queryUserById(id);
}
//查询全部用户
@Override
public List<User> queryAllUser() {
return userMapper.queryAllUser();
}
//修改用户
@Override
public int updateUser(User user) {
return userMapper.updateUser(user);
}
}
3.显示数据
检查无误后运行Application项目入口类,在浏览器上访问http://localhost:8081/queryAllUser既可以访问到数据库里的数据
提示:直接访问localhost:8081会报白页错误(这是正确的)。
数据在springboot中以String字符串的 形式存在,在前端以JSON格式的形式存在
4.修改数据
4.1 增加数据
4.2 删除数据
4.3 修改数据
5. 参考资料
详细实战——从零开始的SpringBoot搭建网站
spring boot——spring boot的基本配置——spring boot整合mybatis——本地实例运行——模糊查询操作方式一——返回list列表-pojo类型——根据name查询数据