SpringBoot 整合jdbc和mybatis的方法

以下是SpringBoot整合jdbc和mybatis的方法的完整攻略:

前置要求

在进行SpringBoot整合jdbc和mybatis之前,需要确保已满足以下要求:

  • 已安装好JDK,并配置好环境变量。
  • 已安装好Maven。
  • 已安装好MySQL,创建好了相应的数据库和表,并记录下来数据库的连接信息。

建立SpringBoot项目

首先,需要新建一个SpringBoot项目,并且导入相应的依赖。

在pom.xml文件中添加以下依赖:

<dependencies>
    <!--SpringBoot依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--MyBatis依赖-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>

    <!--JDBC依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <!--MySQL依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.25</version>
    </dependency>

    <!--Log4j2日志依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

</dependencies>

配置数据源

在application.yml文件中进行数据源的配置,如下所示:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

配置MyBatis

在application.yml文件中进行MyBatis的配置,如下所示:

mybatis:
  # 配置mapper文件位置
  mapper-locations: classpath:/mapper/*.xml
  configuration:
    # 开启驼峰命名规则
    map-underscore-to-camel-case: true

配置Mapper

在/resources/mapper目录下,新建UserMapper.xml文件,并添加相应的Mapper语句。

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">
    <select id="getUserById" resultType="User">
        select * from user where id = #{id}
    </select>
    <select id="getAllUsers" resultType="User">
        select * from user
    </select>
    <insert id="insertUser" parameterType="User">
        insert into user (name, age, sex) values (#{name}, #{age}, #{sex})
    </insert>
    <update id="updateUserById" parameterType="User">
        update user set name = #{name}, age = #{age}, sex = #{sex} where id = #{id}
    </update>
    <delete id="deleteUserById" parameterType="int">
        delete from user where id = #{id}
    </delete>
</mapper>

编写Mapper接口

在com.example.demo.mapper包下新建UserMapper接口,并添加相应的方法。

UserMapper.java文件示例代码如下:

package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {
    @Select("select * from user where id = #{id}")
    User getUserById(@Param("id") int id);

    @Select("select * from user")
    List<User> getAllUsers();

    @Insert("insert into user (name, age, sex) values (#{name}, #{age}, #{sex})")
    int insertUser(User user);

    @Update("update user set name = #{name}, age = #{age}, sex = #{sex} where id = #{id}")
    int updateUserById(User user);

    @Delete("delete from user where id = #{id}")
    int deleteUserById(@Param("id") int id);
}

编写Service层

在com.example.demo.service包下新建UserService接口,和UserServiceImpl实现类,并编写相应的方法。

UserService.java示例代码如下:

package com.example.demo.service;

import com.example.demo.entity.User;

import java.util.List;

public interface UserService {
    User getUserById(int id);

    List<User> getAllUsers();

    int insertUser(User user);

    int updateUserById(User user);

    int deleteUserById(int id);
}

UserServiceImpl.java示例代码如下:

package com.example.demo.service.impl;

import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(int id) {
        return userMapper.getUserById(id);
    }

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

    @Override
    public int insertUser(User user) {
        return userMapper.insertUser(user);
    }

    @Override
    public int updateUserById(User user) {
        return userMapper.updateUserById(user);
    }

    @Override
    public int deleteUserById(int id) {
        return userMapper.deleteUserById(id);
    }
}

编写Controller层

在com.example.demo.controller包下,新建UserController类,编写相应的接口:

UserController.java示例代码如下:

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

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

    @Autowired
    private UserService userService;

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

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

    @PostMapping("/add")
    public int insertUser(@RequestBody User user) {
        return userService.insertUser(user);
    }

    @PutMapping("/update")
    public int updateUserById(@RequestBody User user) {
        return userService.updateUserById(user);
    }

    @DeleteMapping("/{id}")
    public int deleteUserById(@PathVariable int id) {
        return userService.deleteUserById(id);
    }
}

测试代码

最后,在src/test/java目录下,新建一个UserMapperTest类,进行相应的测试。

UserMapperTest.java示例代码如下:

package com.example.demo;

import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class UserMapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    void testGetUserById() {
        User user = userMapper.getUserById(1);
        System.out.println(user);
    }

    @Test
    void testGetAllUsers() {
        System.out.println(userMapper.getAllUsers());
    }

    @Test
    void testInsertUser() {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        user.setSex("男");
        System.out.println(userMapper.insertUser(user));
    }

    @Test
    void testUpdateUserById() {
        User user = new User();
        user.setId(1);
        user.setName("李四");
        user.setAge(22);
        user.setSex("男");
        System.out.println(userMapper.updateUserById(user));
    }

    @Test
    void testDeleteUserById() {
        System.out.println(userMapper.deleteUserById(1));
    }
}

以上就是 SpringBoot 整合 jdbc 和 MyBatis 的完整攻略,下面是两个使用示例:

示例 1:用 MyBatis 查询一条数据

通过调用mapper接口中的方法,用MyBatis查询一条数据。

UserController.java示例代码如下:

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/{id}")
    public User getUserById(@PathVariable int id) {
        return userMapper.getUserById(id);
    }
}

示例 2:用jdbc查询所有数据

通过调用JdbcTemplate实例的query方法,用jdbc查询所有数据。

UserController.java示例代码如下:

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

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

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/list")
    public List<Map<String, Object>> getAllUsers() {
        String sql = "SELECT * FROM user";
        List<Map<String, Object>> users = jdbcTemplate.queryForList(sql);
        return users;
    }
}

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

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

相关文章

  • Commons beanutils组件简介

    Commons BeanUtils 组件简介 Commons BeanUtils 组件是 Apache Common 组件库中的一个组件,它提供了许多用于操作 JavaBean 对象的工具类。 功能介绍 Commons BeanUtils 主要提供以下几个方面的功能: 属性拷贝 BeanUtils 提供了一个 copyProperties() 方法,用于从一…

    Java 2023年6月15日
    00
  • PerlScript编写ASP(转载)

    让我来详细讲解一下“PerlScript编写ASP(转载)”的完整攻略。 什么是PerlScript编写ASP? PerlScript编写ASP是一种使用PerlScript语言编写ASP的技术,与VBScript和JScript类似,PerlScript是一种基于Perl的脚本语言,它可以与ASP一起使用来生成动态网页。PerlScript编写ASP可以提…

    Java 2023年6月16日
    00
  • 避免sql注入_动力节点Java学院整理

    接下来我将详细讲解“避免SQL注入_动力节点Java学院整理”的完整攻略。 SQL注入是什么 SQL注入攻击是指攻击者在提交应用程序的输入值时,嵌入执行恶意的SQL语句,从而诱发数据库执行非预期的恶意操作。SQL注入是目前web程序中比较常见的漏洞种类之一,它是由于软件开发人员在编写应用程序或Web页面时,没有对用户输入的数据进行充分的检查,致使攻击者可以攻…

    Java 2023年5月27日
    00
  • Spring Boot中的max-http-header-size配置方式

    当我们使用Spring Boot构建Web应用程序时,可能会遇到 HTTP 头过大的问题,默认情况下,Spring Boot限制HTTP头大小,如果你的 HTTP 头太大,它将拒绝处理请求。 为了解决这个问题,我们需要修改Spring Boot的默认配置,并设置合适的HTTP头大小。下面是引导Spring Boot应用程序中配置max-http-header…

    Java 2023年5月19日
    00
  • Java实现作业调度的示例代码

    下面是Java实现作业调度的示例代码的攻略: 1. 理解作业调度 在计算机系统中,作业是指用户提交的一项任务。作业调度是指操作系统针对用户提交的作业对其进行管理和调度,使其能够高效地执行。作业调度是一个重要的操作系统功能,可以根据用户的需求和系统资源的使用情况,对作业进行优先级、并发度、执行方式等的调度。 2. 利用Java实现作业调度 Java语言具有很好…

    Java 2023年5月18日
    00
  • 小程序的上传文件接口的注意要点解析

    小程序的上传文件接口用于将本地客户端的文件上传到服务器,具体操作过程如下: 请求方式 上传文件接口的请求方式为POST请求。 请求地址 上传文件接口的地址为 https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE。 其中,ACCESS_TOK…

    Java 2023年5月23日
    00
  • Spring Data JPA 简单查询–方法定义规则(详解)

    下面是针对“Spring Data JPA 简单查询–方法定义规则(详解)”这一话题的完整攻略: 一、Spring Data JPASpring Data JPA是一个基于Spring Framework的延伸项目,它提供了使用JPA进行数据持久化的方案。通过Spring Data JPA,我们不再需要编写许多常规的数据访问代码,这是因为Spring Da…

    Java 2023年5月20日
    00
  • Java实现时间动态显示方法汇总

    下面我来详细讲解一下Java实现时间动态显示的方法汇总。 前言 在Java编程中,时间的动态显示是一个很基本的功能,而且在很多场景中也非常常见。在实现时间动态显示的过程中,我们可以使用System.currentTimeMillis()等一些Java自带的API,也可以自己实现。 本文将介绍几种常用的Java实现时间动态显示的方法,以供大家参考。 一、使用S…

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