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日

相关文章

  • Java中SimpleDateFormat 格式化日期的使用

    当我们需要在Java程序中使用日期时,通常使用SimpleDateFormat类的实例进行日期格式化。这个类主要是用来将日期对象转换成字符串,或者将字符串转换成日期对象。下面是关于SimpleDateFormat的使用攻略: SimpleDateFormat格式化日期的基本用法 SimpleDateFormat类提供一个简单的方式来格式化日期和时间。下面的代…

    Java 2023年5月20日
    00
  • SpringSecurity 表单登录的实现

    实现SpringSecurity表单登录需要以下步骤: 导入依赖 需要在项目中导入SpringSecurity相关的依赖包,例如: <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-w…

    Java 2023年5月20日
    00
  • 微信小程序实时聊天WebSocket

    下面为您详细讲解“微信小程序实时聊天WebSocket”的完整攻略。 一、前期准备 了解WebSocket协议的基础知识,包括握手过程、消息格式等; 了解微信小程序基础知识,包括小程序开发、页面结构、组件等; 确保开发环境已经安装好,包括微信web开发者工具、编辑器等。 二、创建WebSocket连接 微信小程序提供了wx.connectSocket() A…

    Java 2023年5月23日
    00
  • Java中URL的处理方法详解

    Java中URL的处理方法详解 概述 在 Java 中,可以使用 java.net.URL 类来处理 URL(统一资源定位符)。 URL 是一个字符串,用来表示一个资源的地址。比如,一个网页的 URL 可以是 https://www.example.com/index.html。URL 通常由一个协议名、一个主机名、一个端口号和一个路径组成。 创建 URL …

    Java 2023年6月15日
    00
  • 解析Java和IDEA中的文件打包问题

    下面是关于解析Java和IDEA中的文件打包问题的完整攻略。 一、问题背景 在进行Java项目开发中,打包是非常重要的一个环节。Java的打包方式主要包括两种:jar和war。常见的打包工具有Maven、Gradle等,开发工具本身也自带打包机制,如IntelliJ IDEA中的Maven插件和Gradle插件。但是在实际操作中,我们经常会遇到一些打包问题,…

    Java 2023年5月19日
    00
  • 利用Java中Calendar计算两个日期之间的天数和周数

    我们来详细讲解一下如何利用Java中的Calendar类计算两个日期之间的天数和周数。 步骤一:创建Calendar实例 我们首先要创建两个Calendar对象,来表示两个日期。这里我们可以使用Calendar类的静态方法getInstance()来获取一个默认时区的实例。 Calendar cal1 = Calendar.getInstance(); Ca…

    Java 2023年5月20日
    00
  • java CompletableFuture实现异步编排详解

    Java CompletableFuture实现异步编排详解 Java中Future,CompletableFuture这两个类非常强大,可以帮助我们完成异步编程。在这里,我们将介绍如何使用Java的CompletableFuture类来实现异步编排的详细攻略。 CompletableFuture的介绍 CompletableFuture是Java 8中新增…

    Java 2023年5月26日
    00
  • CCF考试试题之门禁系统java解题代码

    关于“CCF考试试题之门禁系统java解题代码”的完整攻略,请看下面的详细讲解。 一、题目背景 这是一道CCF认证考试的试题,要求我们写一段代码实现一个门禁系统。门禁系统需要记录人员的姓名和进出时间,并按照时间排序输出人员进入和离开的记录。 二、解题思路 首先,我们需要定义一个类,来存储每位人员的姓名和进出时间。 class AccessRecord { S…

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