springboot框架中如何整合mybatis框架思路详解

在Spring Boot框架中整合MyBatis框架,需要经过以下主要步骤:

  1. 添加依赖:在pom.xml中添加Spring Boot和MyBatis相关的依赖。需要添加spring-boot-starter-webmybatis-spring-boot-startermysql-connector-java等依赖。
<dependencies>
    <!-- Spring Boot Web Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- MyBatis Starter -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    <!-- MySQL Connector/J -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>
</dependencies>
  1. 配置数据源:在application.properties配置文件中,配置MySQL的连接信息。其中,spring.datasource.driver-class-name指定数据源的驱动类,spring.datasource.url指定数据库的URL,spring.datasource.usernamespring.datasource.password指定数据库的用户名和密码。
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
  1. 创建实体类:创建JavaBean,用于映射数据库表,必须添加@Data@AllArgsConstructor注解。
@Data
@AllArgsConstructor
public class User {
    private Integer id;
    private String name;
    private Integer age;
}
  1. 创建Mapper接口:在src/main/java目录下新建包com.example.demo.mapper,创建一个Mapper接口UserMapper,使用注解@Mapper标记这个接口是一个Mapper接口,并编写相关方法。
@Mapper
public interface UserMapper {
    List<User> findAll();
    User findById(Integer id);
    void saveUser(User user);
    void updateUser(User user);
    void deleteUser(Integer id);
}
  1. 创建Mapper.xml文件:在src/main/resources目录下新建包mapper,创建一个Mapper.xml文件UserMapper.xml,编写SQL语句,实现Mapper接口中的方法。
<?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.example.demo.mapper.UserMapper">

  <resultMap id="BaseResultMap" type="com.example.demo.entity.User">
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="age" property="age" jdbcType="INTEGER" />
  </resultMap>

  <select id="findAll" resultMap="BaseResultMap">
    select * from user
  </select>

  <select id="findById" resultMap="BaseResultMap">
    select * from user where id=#{id}
  </select>

  <insert id="saveUser">
    insert into user(name, age) values(#{name}, #{age})
  </insert>

  <update id="updateUser">
    update user set name=#{name}, age=#{age} where id=#{id}
  </update>

  <delete id="deleteUser">
    delete from user where id=#{id}
  </delete>

</mapper>
  1. 实现Service层:在src/main/java目录下新建包com.example.demo.service,创建一个Service接口UserService,以及一个实现类UserServiceImpl。在UserServiceImpl中,可以注入UserMapper接口,并调用Mapper方法。
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> findAll() {
        return userMapper.findAll();
    }

    @Override
    public User findById(Integer id) {
        return userMapper.findById(id);
    }

    @Override
    public void saveUser(User user) {
        userMapper.saveUser(user);
    }

    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    @Override
    public void deleteUser(Integer id) {
        userMapper.deleteUser(id);
    }
}
  1. 编写Controller:在src/main/java目录下新建包com.example.demo.controller,创建一个Controller类UserController,注入UserService实例,并编写相关接口方法。
@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/")
    public List<User> findAll() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User findById(@PathVariable Integer id) {
        return userService.findById(id);
    }

    @PostMapping("/")
    public String saveUser(@RequestBody User user) {
        userService.saveUser(user);
        return "success";
    }

    @PutMapping("/")
    public String updateUser(@RequestBody User user) {
        userService.updateUser(user);
        return "success";
    }

    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Integer id) {
        userService.deleteUser(id);
        return "success";
    }
}
  1. 运行程序:执行mvn clean package命令,然后执行java -jar target/demo-0.0.1-SNAPSHOT.jar命令,启动Spring Boot应用。在浏览器或Postman中访问http://localhost:8080/api/users/,即可测试API是否正常。

示例1:查询用户列表接口

创建一个Spring Boot应用,并在pom.xml中添加以下依赖。

<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.1.4</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>

创建一个User实体类。

@Data
@AllArgsConstructor
public class User {
    private Integer id;
    private String name;
    private Integer age;
}

创建一个UserMapper接口。

@Mapper
public interface UserMapper {
    List<User> findAll();
}

创建一个UserMapper.xml文件。

<?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.example.demo.mapper.UserMapper">

  <resultMap id="BaseResultMap" type="com.example.demo.entity.User">
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="age" property="age" jdbcType="INTEGER" />
  </resultMap>

  <select id="findAll" resultMap="BaseResultMap">
    select * from user
  </select>

</mapper>

创建一个UserService接口。

public interface UserService {
    List<User> findAll();
}

创建一个UserServiceImpl实现该接口。

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> findAll() {
        return userMapper.findAll();
    }
}

创建一个UserController控制器类。

@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/")
    public List<User> findAll() {
        return userService.findAll();
    }
}

运行程序,并在浏览器或Postman中访问http://localhost:8080/api/users/,即可返回所有用户的信息。

示例2:新增用户接口

创建一个Spring Boot应用,并在pom.xml中添加以下依赖。

<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.1.4</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>

创建一个User实体类。

@Data
@AllArgsConstructor
public class User {
    private Integer id;
    private String name;
    private Integer age;
}

创建一个UserMapper接口。

@Mapper
public interface UserMapper {
    void saveUser(User user);
}

创建一个UserMapper.xml文件。

<?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.example.demo.mapper.UserMapper">

  <insert id="saveUser">
    insert into user(name, age) values(#{name}, #{age})
  </insert>

</mapper>

创建一个UserService接口。

public interface UserService {
    void saveUser(User user);
}

创建一个UserServiceImpl实现该接口。

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public void saveUser(User user) {
        userMapper.saveUser(user);
    }
}

创建一个UserController控制器类。

@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("/")
    public String saveUser(@RequestBody User user) {
        userService.saveUser(user);
        return "success";
    }
}

运行程序,并在浏览器或Postman中发送Post请求,访问http://localhost:8080/api/users/,请求体为以下JSON格式。

{
  "name": "张三",
  "age": 20
}

即可成功创建一个用户,并返回“success”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot框架中如何整合mybatis框架思路详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • IntelliJ idea 如何生成动态的JSON字符串(步骤详解)

    下面是详细的攻略,包括两个示例说明。 IntelliJ idea 如何生成动态的JSON字符串(步骤详解) 一、使用Gson库生成JSON字符串 在IntelliJ Idea中创建一个Java项目,然后在项目中导入Gson库的jar包。 创建一个Java类,在类中定义一个类成员,用于存储需要生成的JSON数据。 “`java import com.goog…

    Java 2023年5月26日
    00
  • SpringBoot学习篇之@Valid与@Validated的区别

    下面是SpringBoot学习篇之@Valid与@Validated的区别的攻略。 一、@Valid和@Validated的作用 在SpringMVC中,@Valid和@Validated注解全部用于校验参数。使用它们可以大大简化代码和提高代码的可读性。 二、@Valid和@Validated的区别 @Valid是JSR-303/JSR-349规范中的注解,…

    Java 2023年5月20日
    00
  • 使用SSM+Layui+Bootstrap实现汽车维保系统的示例代码

    下面就为大家介绍如何使用SSM+Layui+Bootstrap实现汽车维保系统的完整攻略。首先,我们将从环境搭建开始,分别介绍SSM框架、Layui和Bootstrap的使用方法和示例。 环境搭建 JDK 1.8及以上 Maven 3.X及以上 Tomcat 8.X及以上 Eclipse集成开发环境 以上环境安装配置完成后,我们就可以开始使用SSM+Layu…

    Java 2023年5月19日
    00
  • Java比较两个List的值是否相等的方法

    要比较两个Java中的List是否相等,可以采用以下几种方法: 1.利用equals()方法进行比较 使用Java List提供的equals()方法进行比较是最简单的比较方式。这种方法只需要比较两个List中每个项目的值是否都相同,并且每个List中的项目顺序也要相同。示例代码如下: //定义两个List List<String> list1 …

    Java 2023年5月26日
    00
  • 解析SpringSecurity+JWT认证流程实现

    下面我将为大家详细讲解 “解析SpringSecurity+JWT认证流程实现” 的完整攻略。 1. JWT简介 JSON Web Token(JWT)是一种定义了一种紧凑且自包含的方式,可以用于将各种信息传递给另一个系统。JWT 在 Web 应用中得到广泛的应用,其最大的优势就是可以在客户端和服务器之间,通过方式方便快捷的的方式实现身份认证和授权。 JWT…

    Java 2023年5月20日
    00
  • Mybatis通过数据库表自动生成实体类和xml映射文件

    “Mybatis通过数据库表自动生成实体类和xml映射文件”的完整攻略主要包括以下步骤:使用Mybatis Generator插件生成实体类和xml映射文件,配置Mybatis Generator插件,使用命令行或maven命令运行生成器。 使用Mybatis Generator插件生成实体类和xml映射文件 Mybatis Generator是一个能够根据…

    Java 2023年5月20日
    00
  • Springboot开发OAuth2认证授权与资源服务器操作

    Spring Boot开发OAuth2认证授权与资源服务器操作 OAuth2认证授权是Web开发中非常实用的技术,解决了多种应用程序认证和权限的问题。在Spring Boot中集成OAuth2是一个非常流行的做法,本文将讲解如何使用Spring Boot来实现OAuth2认证和授权。 步骤 步骤1:创建Spring Boot项目 首先我们要创建一个Sprin…

    Java 2023年5月20日
    00
  • Java中高效判断数组中是否包含某个元素的几种方法

    下面来详细讲解Java中高效判断数组中是否包含某个元素的几种方法。 问题描述 在Java中的开发中经常需要判断一个数组中是否包含某个元素,这是一个非常常见的需求。但是在实践中,我们需要选择高效的方法来完成这个任务,以尽快地得到结果,提高程序的运行效率和响应速度。 方法一:使用循环判断 使用循环逐一遍历数组中的元素,对每个元素和目标元素进行比较,如果相同,则说…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部