SpringBoot整合mybatis的方法详解

下面我来为你详细讲解“SpringBoot整合mybatis的方法详解”的完整攻略。

准备工作

  1. 在maven中引入spring-boot-starter-jdbc、mybatis-spring-boot-starter、mysql-connector-java等依赖。
  2. 在application.properties中配置数据库信息和mybatis配置。
spring.datasource.url= jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# mybatis
mybatis.type-aliases-package=com.example.mybatisdemo.domain
mybatis.mapper-locations=classpath:mapper/*.xml

配置Mybatis

  1. 在SpringBoot项目中创建一个mapper接口,用于操作数据库,例如UserMapper.java:
@Mapper
@Repository
public interface UserMapper {
    List<User> findAll();

    User findById(Long id);

    void save(User user);
}

在这个接口中定义了三个方法,分别用于查询所有用户、根据id查询用户、保存用户。

  1. 在resources/mapper中编写xml文件,与mapper接口相对应,例如UserMapper.xml:
<mapper namespace="com.example.mybatisdemo.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.mybatisdemo.domain.User">
        <id column="id" jdbcType="BIGINT" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="age" jdbcType="INTEGER" property="age" />
        <result column="email" jdbcType="VARCHAR" property="email" />
    </resultMap>

    <select id="findAll" resultMap="BaseResultMap">
        SELECT id, name, age, email FROM user
    </select>

    <select id="findById" parameterType="java.lang.Long" resultMap="BaseResultMap">
        SELECT id, name, age, email FROM user WHERE id = #{id}
    </select>

    <insert id="save" parameterType="com.example.mybatisdemo.domain.User">
        INSERT INTO user (name, age, email) VALUES (#{name}, #{age}, #{email})
    </insert>
</mapper>

这个xml文件中定义了三个查询语句,与上面定义的mapper接口相对应,同时定义了resultMap用于映射查询结果。

测试

  1. 在测试类中注入UserMapper,并测试findAll方法:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testFindAll() {
        List<User> users = userMapper.findAll();
        Assert.assertEquals(3, users.size());
    }
}

这个测试类中注入了UserMapper,测试了findAll方法。

  1. 另外一个例子:
@RestController
public class UserController {
    @Resource
    private UserMapper userMapper;

    @GetMapping("/users")
    public Map<String, Object> findAll() {
        Map<String, Object> result = new HashMap<>();
        result.put("code", 200);
        result.put("message", "成功");
        result.put("data", userMapper.findAll());
        return result;
    }

    @PostMapping("/user")
    public Map<String, Object> save(User user) {
        Map<String, Object> result = new HashMap<>();
        userMapper.save(user);
        result.put("code", 200);
        result.put("message", "成功");
        return result;
    }
}

这个例子用RestController(SpringMVC)对外提供了两个接口,分别用于查询所有用户和保存用户,其中注入了UserMapper。

以上就是关于“SpringBoot整合mybatis的方法详解”的完整攻略,包含了配置mybatis和测试两条示例。希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合mybatis的方法详解 - Python技术站

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

相关文章

  • 用bat批处理实现163邮箱自动登陆的代码[已测]

    使用bat批处理实现网页自动化是一种高效的实现方式。下面是使用bat批处理实现163邮箱自动登陆的完整攻略及示例说明: 1. 准备工作 首先,需要在电脑上安装好以下两个工具: 安装好Chrome浏览器 安装好Chrome浏览器的Driver 其中,Chrome浏览器的Driver需要根据自己安装的Chrome版本来选择,可以在 https://npm.tao…

    Java 2023年6月16日
    00
  • 什么是永久代?

    以下是关于 Java 永久代的详细讲解和使用攻略: 什么是永久代? Java 永久代(Permanent Generation)是一种用于存储加载类信息、常量、静态变量、即时编译编译后的代码数据的内存区域。永久代是线程共享的,其大小可以通过 -XX:MaxPermSize 参数进行设置。 永久代的使用攻略 使用 Java 永久代需要注意以下几点: 在程序开发…

    Java 2023年5月12日
    00
  • Java类之间的关系图_动力节点Java学院整理

    Java类之间的关系图_动力节点Java学院整理 在Java编程中,我们经常需要对类之间的关系进行分析和描述。类之间的关系可以用关系图来表示。在本文中,我们将讲解如何绘制Java类之间的关系图。 步骤1: 了解UML类图 UML(Unified Modeling Language)是一种用于软件设计的标准图形化语言。其中,类图是UML中最基本和最常用的图之一…

    Java 2023年5月26日
    00
  • JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现

    下面是详细的攻略: JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现 背景介绍 JSON是一种轻量级的数据交换格式,常用于Web应用中的数据传输。在实际开发中,我们常常需要将JSON数据转换为Java对象,并将这些对象存储到数据库中。而JSON数据可能比较复杂,包含嵌套的数据结构,如树形结构数据。因此,本篇攻略将介绍如何使用Jav…

    Java 2023年5月26日
    00
  • Struts2之Validator验证框架的详细介绍

    Struts2之Validator验证框架详细介绍 Validator是Struts2的核心验证框架之一,它通过在Action中添加验证规则来确认表单数据的有效性。Validator提供了大量的验证方法,比如检查字符串长度、格式、是否为空等等。 常用验证方法 Validator提供了许多常用的验证方法,常用的方法如下: required:检查字段必填 str…

    Java 2023年5月20日
    00
  • java 多态实例代码

    我们来讲解一下“java 多态实例代码”的完整攻略。 什么是多态 多态是指同一种行为具有多个不同表现形式或形态的能力,即同一种行为基于不同的对象会产生不同的结果。在Java中,多态是指一个对象的实例在不同的情况下会表现出不同的行为。 多态的实现 在Java中,多态的实现主要有两种方式:继承和接口。通过继承实现多态,我们可以创建一个父类,然后在子类中重写其中一…

    Java 2023年5月30日
    00
  • Java中的这些骚操作你不能不知道!!!

    Java中的这些骚操作你不能不知道!!! 本篇文章将为你介绍Java中的一些高级操作和技巧,帮助你更好地理解和使用Java。 1. 位操作符 Java提供了许多位操作符,如左移运算符(<<)、右移运算符(>>)和按位与运算符(&)等。这些运算符可以帮助我们对二进制数做一些处理,使程序更加高效。 例如,我们可以使用左移运算符来快…

    Java 2023年5月30日
    00
  • java中File类的构造函数及其方法

    当我们在Java程序中需要处理文件相关的操作时,File类就会变得非常重要。它是Java中处理文件和目录的核心类,提供了很多有用的方法和构造函数。下面我们就来详细讲解一下Java中File类的构造函数及其方法。 File类的构造函数 File类的构造函数用于创建一个File对象,它可以接受文件名或者文件路径作为参数,也可以接受一个代表目录的File对象作为参…

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