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日

相关文章

  • C#实现Array添加扩展实例

    一、关于C#实现Array添加扩展实例 在C#中实现Array添加扩展实例可以帮助我们更加方便地对数组进行操作。主要思路是通过创建扩展方法来实现。下面是具体实现步骤: 创建一个public static类,并将其命名为ArrayExtension(类名可根据自己需要命名),这个类包含要添加的扩展方法。 在该类中创建一个静态方法,该方法接受一个数组作为参数,并…

    Java 2023年5月19日
    00
  • 如何利用JAVA实现走迷宫程序

    让我们来详细讲解如何利用JAVA实现走迷宫程序的完整攻略: 1. 确定程序的基本思路 走迷宫问题可以采用递归实现。通过回溯法来找到可以走的路径,并标记这条线路是否可用。实现的基本思路是: 从起点开始,逐步判断是否可以朝上、下、左、右四个方向走。 如果可以,就进入下一个格子,并把当前位置标记为可用。 如果不可以,就回溯到之前的格子,继续判断是否还有其他方向可以…

    Java 2023年5月26日
    00
  • SpringBoot集成阿里巴巴Druid监控的示例代码

    下面是关于SpringBoot集成阿里巴巴Druid监控的示例代码的完整攻略。本文中包含以下内容: 什么是阿里巴巴Druid监控。 阿里巴巴Druid监控的优势与特点。 SpringBoot集成阿里巴巴Druid监控的步骤。 两个示例代码。 什么是阿里巴巴Druid监控 阿里巴巴Druid监控是一款对数据库进行监控的工具。它提供了丰富的监控数据和可视化界面,…

    Java 2023年5月20日
    00
  • Spring Security认证器实现过程详解

    Spring Security认证器实现过程详解 Spring Security是用于保护Web应用程序的开放源代码框架。它可以提供基于角色的安全性,对用户进行身份验证和访问控制来保护应用程序。本文将详细介绍Spring Security认证器实现的过程。 一. Spring Security认证器 Spring Security提供了一个框架来处理所有We…

    Java 2023年6月3日
    00
  • 深入理解springMVC中的Model和Session属性

    在Spring MVC中,Model和Session属性是常用的数据传递方式。Model属性用于在请求处理期间传递数据,而Session属性用于在多个请求之间传递数据。下面是深入理解Spring MVC中的Model和Session属性的完整攻略: Model属性 1. Model属性的作用 Model属性用于在请求处理期间传递数据。在Spring MVC中…

    Java 2023年5月18日
    00
  • 使用sharding-jdbc实现水平分库+水平分表的示例代码

    使用 Sharding-JDBC 实现水平分库+水平分表的步骤如下: 1. 创建共享库(shared database)的配置文件 定义数据库名称以及访问方式,如 JDBC URL,数据源等,同时还需要指定共享库所要分片策略和插件配置。 示例代码如下: # shardingsphere datasource config spring: sharding: …

    Java 2023年5月20日
    00
  • Java中URL传中文时乱码的解决方法

    一、问题描述在Java中进行URL传参时,可能会遇到中文乱码的问题。这里提供一种解决方法。 二、解决方法1.使用URLEncoder和URLDecoder实现编码和解码在请求参数中传入中文时,需要使用URLEncoder对中文进行编码。例如:我们需要向http://www.example.com/Servlet?name=”张三” 这个地址中传入中文参数,可…

    Java 2023年5月20日
    00
  • Java中API的使用方法详情

    Java中的API,即应用程序接口,是Java开发者最常使用的工具之一。它被用于与Java中的系统、库、框架和外部资源进行交互。学习如何正确使用API是Java开发的重要一步。下面我们来详细讲解Java中API的使用方法: 1. API的获取 Java API可以通过不同的渠道来获取。Java官方文档网站提供了最完整的API文档,也可以通过IDE编译器的帮助…

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