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日

相关文章

  • spring boot开发遇到坑之spring-boot-starter-web配置文件使用教程

    在Spring Boot开发中,使用spring-boot-starter-web依赖可以快速构建Web应用程序。但是,有时候我们在配置文件中使用该依赖时会遇到一些坑。以下是spring-boot-starter-web配置文件使用教程的完整攻略: 添加spring-boot-starter-web依赖 在Maven或Gradle中添加spring-boot…

    Java 2023年5月15日
    00
  • 教你用Java SpringBoot如何解决跨域

    教你用 Java Spring Boot 如何解决跨域 在本文中,我们将详细讲解如何使用 Java Spring Boot 解决跨域问题。我们将使用 Spring Boot 2.5.0 版本的源码进行分析。 什么是跨域? 跨域是指在浏览器中,当一个 Web 应用程序试图访问另一个域名下的资源时,浏览器会阻止这种行为。这是由于浏览器的同源策略所导致的。同源策略…

    Java 2023年5月15日
    00
  • Java中Spring的单例模式使用

    Java中Spring的单例模式使用可以说是Spring框架中最常用的一种设计模式,它通过保持一个对象的唯一实例,来使得在系统中所有需要该对象的地方都共享同一个实例。 下面我将详细介绍Java中Spring的单例模式使用的完整攻略,并提供两个代码示例以帮助理解。 1. Spring的单例模式使用背景 首先,我们需要了解Spring框架的单例模式使用背景。 在…

    Java 2023年5月19日
    00
  • java中Calendar与Date类型互相转换的方法

    下面我来详细讲解一下“java中Calendar与Date类型互相转换的方法”。 Calendar转Date 可以通过Calendar的getTime()方法将Calendar类型转换为Date类型。 import java.util.Calendar; import java.util.Date; public class CalendarToDate {…

    Java 2023年5月20日
    00
  • java接收ios文件上传的示例代码

    下面是针对Java接收iOS文件上传的完整攻略,包含两个示例代码。 准备工作 首先,需要构建一个用于接收文件上传的Java Web应用程序。在这个Web应用程序中,我们需要实现文件接收的API,并对上传的文件进行处理并进行必要的持久性存储或其他操作。 为了接收iOS文件上传,我们需要支持常见的文件上传协议,例如HTTP POST、HTTP PUT或WebDA…

    Java 2023年5月19日
    00
  • SpringBoot中controller深层详细讲解

    Spring Boot中Controller深层详细讲解 在Spring Boot应用程序中,Controller是一个非常重要的组件,它负责处理HTTP请求并返回响应。本文将深入探讨Spring Boot中Controller的详细信息,包括如何定义Controller、如何处理请求、如何返回响应等。 定义Controller 在Spring Boot应用…

    Java 2023年5月15日
    00
  • Spring Cloud Gateway远程命令执行漏洞分析(CVE-2022-22947)

    针对“Spring Cloud Gateway远程命令执行漏洞分析(CVE-2022-22947)”的完整攻略,我将从以下几个方面进行介绍: 漏洞背景 漏洞原理 漏洞危害 漏洞修复措施 攻击示例 漏洞背景 Spring Cloud Gateway是Spring推出的一个基于Spring Boot的网关服务。它可以代理多个微服务,并统一处理请求,实现对请求的路…

    Java 2023年5月19日
    00
  • Java原生方法实现 AES 算法示例

    下面我将为您详细讲解“Java原生方法实现 AES 算法示例”的完整攻略。 什么是AES算法 AES(Advanced Encryption Standard)高级加密标准是一种对称加密算法,也是当前使用最广泛的加密算法之一。它可以加密128位、192位和256位的数据,并且安全性比DES更高。 Java中的AES算法实现 Java内置了AES算法的实现,我…

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