您现在的位置是:首页 > 正文

【Springboot】springboot中使用mybatis操作数据库

2024-04-01 00:55:02阅读 6

新建springboot项目的时候,选择好web,mybatis,JDBC

在application.properties或者application.yml中配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/studentManagerBoot?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    username: root
    password:

Student的实体类:

package com.hj.studentmanagerboot.user.entity;

public class Student {
    private int stuId;
    private int stuNum;
    private String stuName;
    private String stuBirthday;
    private int stuEnterYear;
    private int stiState;

    @Override
    public String toString() {
        return "Student{" +
                "stuId=" + stuId +
                ", stuNum=" + stuNum +
                ", stuName=" + stuName +
                ", stuBirthday='" + stuBirthday + '\'' +
                ", stuEnterYear=" + stuEnterYear +
                ", stiState=" + stiState +
                '}';
    }
    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public int getStuId() {
        return stuId;
    }

    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    public int getStuNum() {
        return stuNum;
    }

    public void setStuNum(int stuNum) {
        this.stuNum = stuNum;
    }

    public String getStuBirthday() {
        return stuBirthday;
    }

    public void setStuBirthday(String stuBirthday) {
        this.stuBirthday = stuBirthday;
    }

    public int getStuEnterYear() {
        return stuEnterYear;
    }

    public void setStuEnterYear(int stuEnterYear) {
        this.stuEnterYear = stuEnterYear;
    }

    public int getStiState() {
        return stiState;
    }

    public void setStiState(int stiState) {
        this.stiState = stiState;
    }
}
View Code

写好在dao包中新建StudentMapper接口,添加getStudent(int stuId)方法

package com.hj.studentmanagerboot.user.dao;

import com.hj.studentmanagerboot.user.entity.Student;
import org.springframework.stereotype.Repository;

@Repository
public interface StudentMapper {
    Student getStudent(int stuId);
}

在service包中新建getStudentService,并自动装配StudentMapper,添加getStudentService的方法

package com.hj.studentmanagerboot.user.service;

import com.hj.studentmanagerboot.user.dao.StudentMapper;
import com.hj.studentmanagerboot.user.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class StudentServiceTest {
    @Autowired
    StudentMapper studentMapper;

    public Student getStudent(int stuId) {
        return studentMapper.getStudent(stuId);
    }
}

在controller中自动装配StudentService

package com.hj.studentmanagerboot.user.handler;


import com.hj.studentmanagerboot.user.service.StudentServiceTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("testStudent")
public class StudentHandlerTest {
    @Autowired
    private StudentServiceTest studentServiceTest;
    @RequestMapping("getUser/{id}")
    public String getUser(@PathVariable("id") int stuId) {
        return studentServiceTest.getStudent(stuId).toString();
    }

}

在SpringBoot的入口程序中增加mybatis的注解,扫描dao包(如果不使用扫描包的方式,可以在dao包中的每个Mapper接口前,加上@Mapper注解)

@MapperScan("com.hj.studentmanagerboot.user.dao")
public class ...{

}

在Resource文件下新建mapper文件夹存放Mapper.xml,并在application.yml或application.properties中增加存放mybatis的Mapper配置文件的信息:

mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  type-aliases-package: com.hj.studentmanagerboot.user.entity
#如果不使用type-aliases-package,则在每个实体类前加上@Component即可

在StudentMapper.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.hj.studentmanagerboot.user.dao.StudentMapper">
    <select id="getStudent" resultType="com.hj.studentmanagerboot.user.entity.Student">
        select * from stuInfo where stuId = #{stuId}
    </select>
</mapper>

 最后还碰到一个这样的问题,数据中命名一般是user_name,而实体类一般是userName,如何能让查找时候,自动转化命名呢。

只需要在application.yml中加入下面的配置即可:

mybatis:
  configuration:
    map-underscore-to-camel-case: true

 

转载于:https://www.cnblogs.com/to-red/p/11368292.html

网站文章

  • 静态连接(dynamic link)和动态连接(static link)初步理解

    前两天配置QT和VTK环境,焦头烂额啊,第一次配置个环境配置这么费劲的,这俩工具都不是微软出的开发库,需要自己编译,编译时间那个长。。。3,4个小时啊,等的花都谢了,好不容易编译好了,又出现了各种问题。 首先,早就听说过这两个库是跨平台的,当时觉得好牛逼啊,作为一个鄙视wind

    2024-04-01 00:54:37
  • mediawiki 详细安装

    1、首先在http://sourceforge.net/projects/wampserver/files/WampServer%202/WampServer%202.2/下载2.2版本,http://sourceforge.net/projects/wampserver/files/WampServer%202/是各个版本的安装文件。根据自己的系统确定安装32位的还是64位的 2、双击进行安装

    2024-04-01 00:54:29
  • 42. Trapping Rain Water 计算储水量

    给定一个数组, 表示高度,计算存水量。例子:Input: [0,1,0,2,1,0,1,3,2,1,2,1]Output: 6方法1:动态规划int trap(vector<int>& height) { if (height.empty()) { return 0; } int n = height.size(); int lef...

    2024-04-01 00:54:22
  • 从订单信息页面进入订单详细商品页面,最简单的MVC思想

    从订单信息页面进入订单详细商品页面,最简单的MVC思想

    前言习惯上图,看流程图把,下面是具体实现以后的一个流程图。步骤- (1)点击订单详情,进入订单详情列表,展示订单的一下基本信息,在上图框内,可随机输入查询信息,查询具体订单信息。(2)点击订单商品详情,进入具体订单,图中进入订单编号1的商品页面,可以看到具体商品信息,从数据库我们建立一张表,关联订单跟具体商品的关系。正文直接上代码吧,简单粗暴,因为之前有

    2024-04-01 00:53:58
  • 使用C/C++实现Java的Native方法接口(JNI)(4)JNI数据类型

    在Java程序中使用native接口(JNI)调用外部的使用C/C++实现的函数

    2024-04-01 00:53:45
  • python学习笔记

    argparse模块1.使用步骤:(1)import argparse 首先导入模块(2)parser = argparse.ArgumentParser() 创建一个解析对象(3)parser.ad...

    2024-04-01 00:53:34
  • 基于Java的忘忧小区物业管理系统设计与实现

    基于Java的忘忧小区物业管理系统设计与实现

    我们通过对多个小区物业进行实地统计分析,了解具体的业务处理,准确的掌握了小区的服务业务体系,以便于我们开发一套完善的物业管理系统。随着互联网应用的普及,计算机已完全能够胜任物业管理工作,而且更加准确、...

    2024-04-01 00:53:25
  • ActiveMQ专题10 —— ActiveMQ的存储和持久化

    ActiveMQ专题10 —— ActiveMQ的存储和持久化

    官网click to 官网完美的诠释了持久化数据库问题体会一下面试redis持久化方式有几种AOF、RDB同样对于activemq,也是需要了解它的持久化机制持久化一句话就是:ActiveMQ宕机了,...

    2024-04-01 00:53:00
  • Cause: java.lang.IllegalArgumentException

    Cause: java.lang.IllegalArgumentException

    背景概述:在练习Mybatis整合Spring使用传统DAO模式开发,最后Junit测试时报了这样的错误“Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for queryUserById”,很明显,我在测试“通过Id查询用户”这一 ...

    2024-04-01 00:52:49
  • LeetCode 4. 寻找两个正序数组的中位数(多解法)

    文章目录解法一:合并数组解法二:双指针解法三:二分解法三:进阶二分(划分数组) 解法一:合并数组 将两个数组合并后,直接根据下标找到中位数。时间复杂度O(m+n)O(m + n)O(m+n),空间复杂...

    2024-04-01 00:52:41