springboot集成Mybatis的详细教程

SpringBoot 是一个非常流行的Java Web框架,与 Mybatis 结合使用可以快速地实现数据操作和服务构建。下面将为你提供 SpringBoot 集成 Mybatis 的详细教程。

准备工作

在开始之前,请确保已经完成以下准备工作:

  1. 搭建好了 Java 开发环境,并确保已经安装了 Maven。
  2. 创建一个 SpringBoot 项目。

添加依赖

在项目的pom.xml中添加以下依赖:

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

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

具体内容包括:

  • spring-boot-starter-web:SpringBoot Web 启动器,提供了Web开发所需要的基础框架和功能。
  • mybatis-spring-boot-starter:SpringBoot 集成 Mybatis 的依赖。
  • mysql-connector-java:用来连接数据库。

添加配置

在项目的 application.properties 中添加以下配置:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=root

mybatis.type-aliases-package=com.example.demo.entity
mybatis.mapper-locations=classpath:mapper/*.xml

上面的配置中,配置了连接数据库的相关信息,以及 Mybatis 的配置信息。

创建实体类

在 com.example.demo.entity 包下创建实体类 User:

public class User {
    private Long id;
    private String name;
    private Integer age;
    // 省略 getters 和 setters
}

创建 Mapper 接口

在 com.example.demo.mapper 包下创建 UserMapper 接口:

@Mapper
public interface UserMapper {
    void insert(User user);
    void delete(Long id);
    void update(User user);
    User getById(Long id);
    List<User> getAll();
}

创建 Mapper XML

在 resources 目录下创建 mapper 目录,再创建 UserMapper.xml 文件:

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

    <sql id="Base_Column_List">
        id, name, age
    </sql>

    <select id="getById" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from user
        where id = #{id,jdbcType=BIGINT}
    </select>

    <select id="getAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from user
    </select>

    <insert id="insert" parameterType="com.example.demo.entity.User">
        insert into user
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="name != null">
                name,
            </if>
            <if test="age != null">
                age,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=BIGINT},
            </if>
            <if test="name != null">
                #{name,jdbcType=VARCHAR},
            </if>
            <if test="age != null">
                #{age,jdbcType=INTEGER},
            </if>
        </trim>
    </insert>

    <update id="update" parameterType="com.example.demo.entity.User">
        update user
        <set>
            <if test="name != null">
                name = #{name,jdbcType=VARCHAR},
            </if>
            <if test="age != null">
                age = #{age,jdbcType=INTEGER},
            </if>
        </set>
        where id = #{id,jdbcType=BIGINT}
    </update>

    <delete id="delete" parameterType="java.lang.Long">
        delete from user
        where id = #{id,jdbcType=BIGINT}
    </delete>
</mapper>

上面的 XML 中定义了增删改查的 SQL语句。

创建 Service 层

在 com.example.demo.service 包下创建 UserService 接口和 UserServiceImpl 类:

public interface UserService {
    void insert(User user);
    void delete(Long id);
    void update(User user);
    User getById(Long id);
    List<User> getAll();
}

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

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

    @Override
    public void delete(Long id) {
        userMapper.delete(id);
    }

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

    @Override
    public User getById(Long id) {
        return userMapper.getById(id);
    }

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

创建 Controller

在 com.example.demo.controller 包下创建 UserController 类:

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

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

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

    @PostMapping("/insert")
    public void insert(@RequestBody User user) {
        userService.insert(user);
    }

    @PostMapping("/update")
    public void update(@RequestBody User user) {
        userService.update(user);
    }

    @DeleteMapping("/delete/{id}")
    public void delete(@PathVariable("id") Long id) {
        userService.delete(id);
    }
}

上述代码中,添加了一些映射,用于处理页面请求。

运行项目

在运行项目之前,我们需要创建一个名为 user 的表,来存储用户数据。

CREATE TABLE user (
    id BIGINT NOT NULL AUTO_INCREMENT,
    name VARCHAR(20),
    age INT,
    PRIMARY KEY(id)
);

启动项目后,在浏览器中输入以下地址可以测试项目是否成功:

  • 查询所有用户:http://localhost:8080/user/getAll
  • 根据 ID 查询用户:http://localhost:8080/user/getById/1

示例

这里提供两个示例,用以更好地理解 SpringBoot 集成 Mybatis 的过程和使用。

示例1

该示例是对 User 表进行增加、删除、修改和查询的操作。

@SpringBootTest
public class UserMapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testInsert() {
        User user = new User();
        user.setName("Tom");
        user.setAge(20);
        userMapper.insert(user);
        Assert.assertNotNull(user.getId());
    }

    @Test
    public void testDelete() {
        User user = new User();
        user.setName("Jerry");
        user.setAge(30);
        userMapper.insert(user);
        Long id = user.getId();
        userMapper.delete(id);
        Assert.assertNull(userMapper.getById(id));
    }

    @Test
    public void testUpdate() {
        User user = new User();
        user.setName("Alex");
        user.setAge(25);
        userMapper.insert(user);
        Long id = user.getId();
        User update = new User();
        update.setId(id);
        update.setName("Jack");
        update.setAge(28);
        userMapper.update(update);
        User updated = userMapper.getById(id);
        Assert.assertEquals("Jack", updated.getName());
        Assert.assertEquals(28, updated.getAge().intValue());
    }

    @Test
    public void testGetById() {
        User user = new User();
        user.setName("Amy");
        user.setAge(22);
        userMapper.insert(user);
        Long id = user.getId();
        User queried = userMapper.getById(id);
        Assert.assertEquals("Amy", queried.getName());
        Assert.assertEquals(22, queried.getAge().intValue());
    }

    @Test
    public void testGetAll() {
        User user1 = new User();
        user1.setName("Lucy");
        user1.setAge(18);
        userMapper.insert(user1);

        User user2 = new User();
        user2.setName("Mike");
        user2.setAge(19);
        userMapper.insert(user2);

        List<User> allUsers = userMapper.getAll();
        Assert.assertEquals(2, allUsers.size());
    }
}

示例2

该示例是利用 SpringBoot 集成 Mybatis 对支付宝交易记录进行查询的操作。

@Service
public class TradeServiceImpl implements TradeService {

    @Autowired
    private TradeMapper tradeMapper;

    @Override
    public List<Trade> getByTradeNo(String tradeNo) {
        return tradeMapper.getByTradeNo(tradeNo);
    }

    @Override
    public List<Trade> getByOrderNo(String orderNo) {
        return tradeMapper.getByOrderNo(orderNo);
    }

    @Override
    public List<Trade> getByMerchantNo(String merchantNo) {
        return tradeMapper.getByMerchantNo(merchantNo);
    }

    @Override
    public List<Trade> getByCreateTime(Date startTime, Date endTime) {
        return tradeMapper.getByCreateTime(startTime, endTime);
    }

    @Override
    public List<Trade> getByUpdateTime(Date startTime, Date endTime) {
        return tradeMapper.getByUpdateTime(startTime, endTime);
    }
}

上述代码中,根据订单号、商户号、交易号、创建时间、最近修改时间查询交易记录。

总结

本文介绍了 SpringBoot 集成 Mybatis 的详细教程,从添加依赖、配置信息到创建实体类、Mapper 接口、Mapper XML、Service 层和 Controller 层的代码编写,再到实际应用的示例,一步步为你讲解。希望本文内容能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot集成Mybatis的详细教程 - Python技术站

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

相关文章

  • 使用 Navicat 创建数据库并用JDBC连接的操作方法

    这里给出使用 Navicat 创建数据库并用 JDBC 连接的操作方法,具体攻略如下: 准备工作 下载并安装 Navicat 数据库管理工具(需要购买或使用试用版); 下载并安装 JDK(Java Development Kit); 下载相应的 JDBC 驱动。 创建数据库 打开 Navicat,点击 “新建连接”; 选择数据库类型和连接方式; 输入主机名、…

    Java 2023年5月20日
    00
  • JavaWeb中导出excel文件的简单方法

    下面是JavaWeb中导出Excel文件的简单方法的完整攻略。 步骤一:导入相关的依赖 在项目中导出Excel文件,需要用到POI库。因此需要在pom.xml中导入相关的依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</…

    Java 2023年5月26日
    00
  • 在Centos上搭建Maven中央仓库的方法

    下面是在Centos上搭建Maven中央仓库的方法的完整攻略。 步骤一:安装Java 在Centos上搭建Maven中央仓库需要先安装Java。可以通过以下命令安装Java: sudo yum update sudo yum install java-devel 安装完成后,可以通过以下命令检查Java是否安装成功: java -version 步骤二:安装…

    Java 2023年5月19日
    00
  • 性能优化包括哪些方面?

    以下是关于性能优化包括哪些方面的完整使用攻略: 性能优化包括哪些方面? 性能优化是指通过改进程序的设计、算法、数据结构、代码实现等方面,提高程序的运行效率和响应速度,减少资源占用和延迟等问题。性能优化包括以下几个方面: 1. 程序设计 程序设计是性能优化的重要方面之一。在程序设计阶段,需要考虑程序的整体架构、模块划分、接口设计等方面,从而保证程序的可扩展性、…

    Java 2023年5月12日
    00
  • 常用的java日期比较和日期计算方法小结

    当涉及处理日期和时间时,Java内置了许多日期类和方法来进行各种操作。在本文中,我们将探讨一些常用的日期比较和日期计算方法,这些方法可以帮助我们在Java中轻松处理各种日期和时间相关的操作。 比较日期 在Java中比较日期的最常用方法是使用compareTo方法。这个方法将返回一个整数,表示两个日期之间的差异。如果第一个日期在第二个日期之前,返回的整数将小于…

    Java 2023年5月20日
    00
  • Java中的HashMap是什么?

    Java中的HashMap Java中的HashMap是一种基于哈希表的数据结构,它实现了Map接口,将键映射到值。与Hashtable类似,但HashMap是非线程安全的,允许null值和null键。 HashMap的基本操作包括put和get。put方法将键值对映射到HashMap中,get方法从HashMap中检索给定键所映射的值。 哈希表 在讨论Ha…

    Java 2023年4月27日
    00
  • jQuery老黄历完整实现方法

    jQuery老黄历完整实现方法 简介 jQuery老黄历是一款对于时间的格式化呈现的插件,可以生成比较形象化的日期解释,比如”今天是个好日子,宜开发,宜部署”。 完整实现方法 要实现jQuery老黄历的功能,需要完成以下步骤: 步骤1:引入jQuery和老黄历脚本 首先,需要在HTML文件的<head>标签内引入jQuery和老黄历的脚本: &l…

    Java 2023年5月23日
    00
  • java实现把对象数组通过excel方式导出的功能

    要实现将Java对象数组导出成Excel文档,我们可以借助Apache POI库。下面是具体的攻略: 1. 引入POI依赖 首先需要在项目中引入POI依赖。可以使用Maven或Gradle构建工具,将以下依赖添加到项目中: <dependency> <groupId>org.apache.poi</groupId> &lt…

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