MyBatis查询数据库之一(概念+创建项目+基础交互)

这篇具有很好参考价值的文章主要介绍了MyBatis查询数据库之一(概念+创建项目+基础交互)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.MyBatis是什么?

2.为什么学习MyBatis?

3. 怎么学 MyBatis

4.第⼀个MyBatis查询

4.1 添加MyBatis框架支持

4.1.1老项目添加MyBatis

4.1.2 新项目添加MyBatis

4.2 配置连接字符串和MyBatis

4.2.1 配置连接字符串

4.2.2 配置 MyBatis 中的 XML 路径

5. 使用 MyBatis 的操作模式操作数据库

5.1 添加实体类

5.2 添加 Mapper 接口

5.3 添加 User Mapper.xml

5.4 添加 Controller


1.MyBatis是什么?

  1. MyBatis支持自定义SQL:MyBatis允许开发者编写自定义的SQL查询语句,从而更好地优化和控制数据库访问。与其他ORM框架不同,MyBatis不会自动创建SQL语句,而是将这一过程交给开发者,使得开发者能够更好地控制数据库查询逻辑。

  2. MyBatis对存储过程支持:MyBatis支持存储过程的调用,可以通过MyBatis执行存储过程,将Java对象与存储过程进行映射,并处理存储过程的输出参数。

  3. MyBatis支持高级映射:MyBatis提供了高级映射功能,允许开发者将复杂的数据库查询结果映射到Java对象中,从而简化数据的处理和转换。

  4. MyBatis去除JDBC代码:MyBatis屏蔽了大部分JDBC(Java Database Connectivity)代码,减少了繁琐的数据库操作,开发者只需关注SQL语句的编写和Java对象的映射。

  5. 参数设置和结果集获取:MyBatis简化了参数设置和结果集获取的过程,开发者只需在配置文件或注解中定义相应的映射关系,MyBatis会自动将Java对象和数据库记录进行转换。

  6. XML和注解配置:MyBatis支持两种方式来配置和映射数据库查询:一种是通过XML文件进行配置,另一种是通过注解来实现。开发者可以根据个人偏好来选择适合的方式。

  7. 映射原始类型、接口和Java POJO:MyBatis支持将原始数据类型、Java接口以及普通Java对象(POJO)与数据库记录进行映射。这种灵活性使得MyBatis适用于各种场景和项目规模。

总的来说,MyBatis是一个功能强大且灵活的持久层框架,通过简化数据库交互和提供丰富的映射功能,它大大提高了Java开发者的生产效率,并被广泛应用于各种Java项目中。

2.为什么学习MyBatis?

对于后端开发来说程序是由以下两部分组成:

  1. 后端程序
  2. 数据库

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端

在之前的学习我们大多采用JDBC的方式来实现后端程序与数据库的交互,但是JDBC的流程关于繁琐

而MyBatis能够帮助我们更加快熟、便捷的完成后端程序与数据库的交互!

3. 怎么学 MyBatis

学习 MyBatis 两步走

  1. 搭建 MyBatis 开发环境

  1. 使用 MyBatis 模式和语法操作数据库

4.第⼀个MyBatis查询

开始搭建 MyBatis 之前,我们先来看⼀下 MyBatis 在整个框架中的定位,框架交互流程图:

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端

MyBatis 也是⼀个 ORM 框架,ORM(Object Relational Mapping),即对象关系映射。在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动的完成数据与对象的互相转换:

  1.   将输入数据(即传入对象)+SQL 映射成原生SQL
  2.   将结果集映射为返回对象,即输出对象ORM 把数据库映射为对象

ORM 把数据库映射为对象:  

  1.     数据库表(table)--> 类(class)
  2.     记录(record,行数据)--> 对象(object)
  3.     字段(field) --> 对象的属性(attribute)

⼀般的 ORM 框架,会将数据库模型的每张表都映射为⼀个 Java 类。 也就是说使用 MyBatis 可以像操作对象⼀样来操作数据库中的表,可以实现对象和数据库表之间的转换,接下来我们来看 MyBatis 的使用吧。

4.1 添加MyBatis框架支持

添加 MyBatis 框架支持分为两种情况:⼀种情况是对自己之前的 Spring 项目进行升级,另⼀种情况是创建⼀个全新的 MyBatis 和 Spring Boot 的项目,下面我们分别来演示这两种情况的具体实现

4.1.1老项目添加MyBatis

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端

<!-- 添加 MyBatis 框架 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.1</version>
        </dependency>
        <!-- 添加 MySQL 驱动 -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

为什么我在这里添加了MySQL驱动呢?

MyBatis 就像⼀个平台(类似淘宝),而数据库相当于商家有很多种,不止有 MySQL,还有 SQL Server、Oracle等等.....因此这两个都是需要添加的,对比自身所使用的数据库来添加就行了

4.1.2 新项目添加MyBatis

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端

我们创建完新的ssm项目,直接去启动时一定会报错, 因为你添加了数据库依赖而没有连接数据库(配置数据库的连接信息)

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端

4.2 配置连接字符串和MyBatis

4.2.1 配置连接字符串

如果是 application.yml 添加如下内容:

# 数据库连接位置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
    username: root
    password: root
    # 驱动
    driver-class-name: com.mysql.cj.jdbc.Driver

注意:这里的password和你数据库的吗密码是一样的!

 application.properties:

spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
#数据库密码
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

注意事项:如果使用 mysql-connector-java 是 5.x 之前的使用的是“com.mysql.jdbc.Driver” ,如果是大于 5.x 使用的是“com.mysql.cj.jdbc.Driver” 。

4.2.2 配置 MyBatis 中的 XML 路径

MyBatis 组成2部分:

  1. 接口(表的使用操作方法,给程序其他类调用的)
  2. xml  (实现接口,写具体SQL语句)
#mybatis 中 xml 保存路径
mybatis:
  mapper-locations:
    - classpath:mybatis/**Mapper.xml

5. 使用 MyBatis 的操作模式操作数据库

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端

先创建数据库

-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;
 
-- 使用数据
use mycnblog;
 
-- 创建表[用户表]
drop table if exists userinfo;
create table userinfo(
 id int primary key auto_increment,
 username varchar(100) not null,
 password varchar(32) not null,
 photo varchar(500) default '',
 createtime datetime default now(),
 updatetime datetime default now(),
 `state` int default 1
) default charset 'utf8mb4';
 
-- 创建文章表
drop table if exists articleinfo;
create table articleinfo(
 id int primary key auto_increment,
 title varchar(100) not null,
 content text not null,
 createtime datetime default now(),
 updatetime datetime default now(),
 uid int not null,
 rcount int not null default 1,
 `state` int default 1
)default charset 'utf8mb4';
 
-- 创建视频表
drop table if exists videoinfo;
create table videoinfo(
 vid int primary key,
 `title` varchar(250),
 `url` varchar(1000),
createtime datetime default now(),
updatetime datetime default now(),
 uid int
)default charset 'utf8mb4';
 
-- 添加一个用户信息
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`,
`createtime`, `updatetime`, `state`) VALUES(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);
 
-- 文章添加测试数据
insert into articleinfo(title,content,uid) values('Java','Java正文',1);
 
-- 添加视频
insert into videoinfo(vid,title,url,uid) values(1,'java title','http://www.baidu.com',1);

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端

5.1 添加实体类

先添加用户的实体类:

package com.example.demo.eneity;

import lombok.Data;

import java.time.LocalDateTime;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2023-08-02
 * Time:16:44
 */
@Data
public class Userinfo {
    private int id;
    private String username;
    private String password;
    private String photo;
    private LocalDateTime createtime;
    private LocalDateTime updatetime;
    private int state;
}

5.2 添加 Mapper 接口

package com.example.demo.mapper;

import com.example.demo.eneity.Userinfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2023-08-02
 * Time:16:48
 */

@Mapper// 和五大类注解是一样的
public interface UserMapper {
    Userinfo getUserById(@Param("id") Integer id);
}

5.3 添加 User 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.example.demo.mapper.UserMapper">

    <select id="getUserById" resultType="com.example.demo.eneity.Userinfo">
        select * from userinfo where id=${id}
    </select>
</mapper>

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端

5.4 添加 Service

package com.example.demo.service;

import com.example.demo.eneity.Userinfo;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2023-08-02
 * Time:17:16
 */

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public Userinfo getUserById(int id){
        return userMapper.getUserById(id);
    }
}

5.4 添加 Controller

package com.example.demo.controller;

import com.example.demo.eneity.Userinfo;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2023-08-02
 * Time:17:22
 */

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


    @Autowired
    private UserService userService;

    @RequestMapping("/getuserbyid")
    public Userinfo getUserById(Integer id){
        if (id == null){
            return null;
        }
        return userService.getUserById(id);
    }
}

MyBatis查询数据库之一(概念+创建项目+基础交互),mybatis,数据库,oracle,spring,java,后端文章来源地址https://www.toymoban.com/news/detail-642040.html

到了这里,关于MyBatis查询数据库之一(概念+创建项目+基础交互)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatis查询数据库(3)

    ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 前面我们讲解了MyBatis增删改查基本操作,下面我们来深入了解MyBatis其中不同和需要注意的地方。 下面我们来实现⼀下根据用户 id 查询用户

    2024年02月14日
    浏览(37)
  • 【Java】Mybatis查询数据库

    经过前面的学习Spring系列的操作已经差不多了,接下来我们继续学习更加重要的知识,将前端传递的参数存储起来,或者查询数据库里面的数据 MyBatis是款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis几乎祛除了所有的JDBC代码以及设置参数和获取结果集

    2024年01月18日
    浏览(38)
  • MyBatis 查询数据库、持久层框架简介

    MyBatis是一款优秀的持久层框架,支持自定义SQL、存储过程以及高级映射。它通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。

    2024年02月12日
    浏览(42)
  • Java EE 突击 13 - MyBatis 查询数据库(2)

    这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好

    2024年02月11日
    浏览(37)
  • MyBatis 查询数据库之二(增、删、改、查操作)

    目录 1. 配置打印 MyBatis 执行的SQL 2. 查询操作 2.1 通过用户 ID 查询用户信息、查询所有用户信息 (1) Mapper 接口 (2)UserMapper.xml 查询所有用户的具体实现 SQL (3)进行单元测试 3. 增加操作 3.1 在 mapper(interface)里面添加增加方法的声明 3.2 在 XMl 中添加 标签和增加的 sql 代码 3.3 生成

    2024年02月14日
    浏览(35)
  • 大学数据库创建与查询实战——查询

    目录 查询表中指定的字段   查询表中的某一个字段的语法格式为: (一) (二)  GROUP BY 子句 (三) ORDER BY :对查询结果进行排序: 头歌实验 (四) (五)   查询表中的某一个字段的语法格式为: SELECT 列名 FROM 表名 ; 不同字段名称之间用逗号“,”分隔开,最后一

    2024年02月10日
    浏览(35)
  • mybatis plus 查询数据库字段名自动添加下划线问题解决

    实体类和数据库中的字段名是一致的,但报错Unknown column \\\'dept_id\\\' in \\\'field list\\\',这是因为plus中的驼峰命名法,会自动添加下划线。 关闭驼峰式命名转换为下划线 在配置文件中加一个: 重新运行,就可以了! 报错信息如下: java.sql.SQLSyntaxErrorException: Unknown column \\\'dept_id\\\' in \\\'fi

    2024年02月07日
    浏览(32)
  • MyBatis-Plus 查询PostgreSQL数据库jsonb类型保持原格式

    在这篇文章,我们保存了数据库的jsonb类型:MyBatis-Plus 实现PostgreSQL数据库jsonb类型的保存与查询 这篇文章介绍了模糊查询json/jsonb类型:PostgreSQL 查询json/jsonb是否存在某个片段 在模糊查询json/jsonb之前,我们得拿到正确的json/jsonb片段,比如我们模糊查询好几个连着的键值对,

    2024年02月15日
    浏览(41)
  • 【Java】Mybatis查询数据库返回JSON格式的字段映射到实体类属性

    今天遇到了一个bug,大概就是数据库(Mysql)中有一个 type 类型字段,数据类型为json,大概是这样的:[“苹果”,“香蕉”,“葡萄”]的数据格式,这个bug的问题所在呢就是查询后这个json格式的数据无法映射到我们实体类的属性上,解决方案如下: 实体类的配置: @TableField

    2024年02月15日
    浏览(34)
  • 【MyBatis学习】MyBatis操纵数据库进行查询操作 ?MyBatis与JDBC想比怎么样,赶快与我一起探索吧 ! ! !

    前言: 大家好,我是 良辰丫 ,从今天开始我们就要进入MyBatis的学习了,请君与我一起操纵数据库,MyBatis到底是什么呢?我们慢慢往下瞧! ! !💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包