首页 > 其他分享 >Mybatis在springboot项目中的简单使用

Mybatis在springboot项目中的简单使用

时间:2022-08-16 18:23:04浏览次数:57  
标签:java springboot song userId mybatis 简单 Mybatis import com

一、介绍

MyBatis 是一款优秀的持久层框架,它支持定制化SQL存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。


二、springboot中集成Mybatis所需的特有的相关依赖

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>
    <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
     </dependency>
     <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
     </dependency>

三、相关配置文件

  • application.yml文件配置
mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml #配置xml映射文件的目录
  config-location: classpath:mybatis/mybatis-config.xml #mybatis配置文件

spring:
  datasource:
    username: root
    password:
    url: jdbc:mysql://localhost:3306/sy_java_db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8 #jdbc数据库连接固定写法
    driver-class-name: com.mysql.cj.jdbc.Driver #对应使用的驱动
  • mybatis-config.xml文件配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="mysql">
        <!--配置Mysql的环境-->
        <environment id="mysql">
            <!--配置事务的类型-->
            <transactionManager type="JDBC"/>
            <!--配置数据源(连接池)-->
            <dataSource type="POOLED">
                <!--配置连接数据库的四个基本信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/sy_java_db" />
                <property name="username" value="root" />
                <property name="password" value="" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
<!--被扫描的配置xml-->
        <mapper resource="mapper/UserDao.xml" />
    </mappers>
</configuration>
  • 简单的Mapper 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.song.dao.UserDao"> <!--接口,定义操作数据的方法-->

    <resultMap type="com.song.entity.User" id="UserMap">  <!--实体类,类中属性对应所需查询的表的字段,这里包名使用entity,也可以是pojo-->
        <result property="userId" column="user_id" jdbcType="INTEGER"/> <!--实体类与表字段的映射关系,字段的数据类型-->
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <result property="age" column="age" jdbcType="INTEGER"/>
    </resultMap>

    <!--query single-->
    <select id="queryById" resultMap="UserMap">
        select
          user_id, `name`, age
        from sy_java_db.user
        where user_id = #{userId}
    </select>

    <!--query by id-->
    <select id="queryAll" resultMap="UserMap">
        select
          user_id, `name`, age
        from sy_java_db.user
    </select>

</mapper>

四、Java相关代码

  • UserDao.java
    UserDao接口,方法名与对应mapper的xml文件中的select/insert/delete/update标签中的id的值一致
package com.song.dao;

import com.song.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper //用以申明接口是Mapper接口,会自动被扫描
public interface UserDao {
    User queryById(int userId);

    List<User> queryAll();
}
  • User.java 实体类编写
package com.song.entity;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
    private static final long serialVersionUID = -81805678943456282L;

    private int userId;

    private String name;

    private int age;
}

测试

  1. 创建Get请求传输userId获取用户名
package com.song.controller;


import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.song.constant.MsgCode;
import com.song.dao.UserDao;
import com.song.entity.User;
import com.song.response.BaseResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

@RestController
public class HomeController {
    @Resource
    private UserDao userDao;

    @Resource
    ObjectMapper objectMapper;

    @GetMapping("/getUserInfo")
    public Object home(HttpServletRequest request){
        int userId = Integer.parseInt(request.getParameter("userId"));
        User users = userDao.queryById(userId);
        String s;
        try {
            s = objectMapper.writeValueAsString(users);
        } catch (JsonProcessingException e) {
            return BaseResponse.fail(MsgCode.REQUEST_FAIL_OTHER_ERR.getCode(),MsgCode.REQUEST_FAIL_OTHER_ERR.getMessage());
        }
        return BaseResponse.ok(s);
    }
}

  1. 启动SpringBoot

  2. 使用postman进行测试

标签:java,springboot,song,userId,mybatis,简单,Mybatis,import,com
From: https://www.cnblogs.com/sy19931020/p/16592498.html

相关文章

  • 腾讯云服务器安装rabbitmq及简单测试记录
    一、安装近期对消息队列的学习让我对消息中间件产生了兴趣,而作为消息队列的使用的rabbitmq,就是我学习中间件的第一步。rabbitmq和erlang的安装安装之前先检查环境:[root......
  • 简单说一下泛型
    Java泛型不变性  泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数......
  • github 代码简单讲解
     github地址:https://github.com/lijiesheng/rabbitmq/tree/simplesimple模式分支1:simple-data-lose没有引入应答机制,只要消费者关闭,队列中的数据就......
  • git stash 简单用法
    做项目时,自己本地内容开发还没完成(还没有提交比本地,没有commit),又接到新的紧急bug修复可以用gitstash保存自己修改的内容修复bug提交线上再用gitstashpop还原本地......
  • mybatis 14: 多对一关联查询
    业务背景根据订单id查询订单的信息,以及该订单所属的客户的基本信息(不包括该客户自己的订单信息)两张数据表客户表订单表实体类客户实体类:Customerpr......
  • Python - PyMuPDF模块的简单使用
    1.简介能够用来对PDF文档进行操作的Python包有好几个,如用于提取内容的PdfPlumber、PDFMiner,可以用来对PDF文件进行修改操作的PyPDF2等等,如果只是需要简单地对PDF文件实现......
  • Springboot基础知识 (19) - 在 Spring Boot 项目里使用 JUnit
    在开发中,单元测试(UnitTesting)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。简单来说,就是测试数据的......
  • 解决了Mybatis中Parameter Maps collection does not contain value for xxx 的问题了
    今天做项目的时候之前用mybatis生成好的mapper文件,然后今天在测试的时候报了一个ResultMapscollectiondoesnotcontainvalue..的错误,一直在比对参数的映射文件,又觉得......
  • MyBatisPlus(三、增删改查)
    目录前言1、查询1、查询所有,不加条件去查询2、查询所有,加条件去查询3、多条件去查询4、分页查询5、等等2、添加3、删除4、修改5、自定义SQL(多表关联查询)总结前言 ......
  • 20220816 springboot_idea_lombok_转Entity 生成的ToDominObject没有用有参构造方
    1问题:使用lombok,DDD设计思想整合mapStruct时,转Entity生成的ToDominObject没有用有参构造方法构造对象 2解决方案:2.1未解决_原因猜想因为生......