认识 MyBatis + MyBatis如何使用 (MyBatis操作数据库)

这篇具有很好参考价值的文章主要介绍了认识 MyBatis + MyBatis如何使用 (MyBatis操作数据库)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本篇介绍了什么是MyBatis,MyBatis的前期配置,MyBatis操作数据库的两种方式:.xml文件 / 注释,使用MyBatis的一些注意,如有错误,请在评论区指正,让我们一起交流,共同进步!



本文开始

1. 什么是MyBatis?

MyBatis(ORM: 对象关系映射框架): 一个持久层框架,也是一个工具实现程序与数据库交互,从而更简单的操作数据库的框架;

为什么使用MyBatis ?
MyBatis 省略了复杂的JDBC操作,可以通过.xml文件的方式 或 注释的方式实现数据库的快速操作;

2. 使用MyBatis - 前期准备

在之前创建的spring boot项目上 + 添加依赖MyBatis + 它操作的数据库(MySQL Driver)

运行程序验证项目是否创建成功:

问题:直接运行MyBatis,会报错;

认识 MyBatis + MyBatis如何使用 (MyBatis操作数据库),myBatis,mybatis,数据库,软件工程,后端,java,spring boot

  • 原因:未设置要连接的具体MySQL信息;

解决方式:需要先配置数据库信息 + MyBatis信息;
在application.properties文件下配置:

  • 数据库连接配置:
//配置数据库连接信息
spring.datasource.url= jdbc:mysql://localhost:3306/数据库名称?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=xxx
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  • MyBatis配置保存路径 + 保存的命名格式;
//设置MyBatis的xml保存路径 和 命名格式
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
//1.classpath:根目录, mybatis : 保存文件夹名称 - 可以任意起名(resoures文件之下的文件都会生成到根目录中)
//2.命名格式作用:读取mybatis文件下所有以 Mapper.xml为后缀的文件;

#配置 MyBatis 执行时打印SQL
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#配置打印MyBatis执行的SQL - 设置默认日志级别
logging.level.com.example.demo=debug

3. MyBatis 操作数据库:

方式一:定义接口 + 实现.xml文件(实现接口)- 实现操作数据库

1.接口:定义接口,方法的声明 - 给Service层调用

  • 定义接口过程:
    1.在数据持久层定义一个接口类
    2.实现定义接口 - 接口类只能定义接口,不能实现;
    3.如果接口参数需要实体类,还需要在model实体层创建对应类;
    4.实体类实现的属性,与之对应操作的数据库相应表的属性值一样;
@Mapper // MyBatis中的接口使用注释Mapper - 数据持久层标识
public interface UserMapper {
    //接口只声明即可
    List<Userinfo> getUser();
}

2.XML:实现接口,对数据库进行具体操作增删改查等等;

  • xml实现接口过程:
    1.根据定义的MyBatis XML中的命名的文件夹名称mybatis
    2.在对应的文件夹(mybatis)下创建对应的xxxMapper.xml文件;
    3.配置xml文件格式,通过namespace实现对应接口路径(也就是之前声明的文件) - 参数为包名+类名;
    4.在文件中写sql标签,select, delete等等;再为标签设置属性 id: 方法的名称, resultType: 设置对应接口的返回类型;
    5.写正常的sql语句,不用加分号;
<?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.dao.UserMapper">
    <select id="getUser" resultType="com.example.demo.model.Userinfo">
        select * from userinfo
    </select>
</mapper>

实现时创建的目录示例:

认识 MyBatis + MyBatis如何使用 (MyBatis操作数据库),myBatis,mybatis,数据库,软件工程,后端,java,spring boot

方式二:定义接口 + 注释 - 实现操作数据库

示例:注解方式实现 单表 或 多表 查询 (update,detele等等操作数据库的方式也可以)
1.定义接口: 与方法一样,在mapper / dao包地下定义接口即可;
2.写对应注释:在定义的接口上,写上要操作数据库的sql语句;

@Select("select * from articleinfo where id=#{id}")
  List<Articleinfo> getListByUid(@Param("id")Integer id);
  
@Select("select a.*,u.username from articleinfo a " +
            "left join userinfo u on a.uid=u.id")
    List<Articleinfo> getAllInfo();

4. 使用MyBatis注意事项

对于参数注入有两种:${}, #{}
① ${xxx} :及时执行,不安全,会发生sql注入;
执行过程:将 ${}位置直接替换;直接执行;
② #{xxx}:预执行;安全可以防止SQL注入;
执行过程:将#{}替换为占位符 ? 并且 ?不能为sql语句;

  • 问题1:SQL注入问题: 在登录时,正常是通过正确的用户+密码,而sql注入,可以通过非法的用户+密码正确登录;

示例:查询数据库时, 输入非法密码,使用${}直接替换而产生问题;

select * from userinfo where username='${username}' and password='${password}';

//输入密码为 ' or 1='1
//sql进行替换
...where username='user_name' and password='' or 1 ='1';
//判断就变为了,密码为假,但是1='1'为真,从而登录成功;

【注】${} 使用场景:业务需要传递sql命令时使用, 结果可以被穷举;

  • 问题2:MyBatis通过名称进行映射,当 类中属性数据库的表中字段名 不一致时,查询结果为null

解决方法:
1.将类中属性名称 与 数据库中表中的字段名保存一样;
2.使用sql语句 as 进行字段名重命名,字段名==属性名;
3.定义一个resultMap, 将属性名 与 字段名手动映射;
主键使用 < id > 标签,column是字段名,property是属性名;

认识 MyBatis + MyBatis如何使用 (MyBatis操作数据库),myBatis,mybatis,数据库,软件工程,后端,java,spring boot

获取自增主键

1.定义接口,与正常方式一样;
2.实现接口:需要设置两个属性
useGeneratedKeys: 是否开启自增;
keyConlumn: 数据库中自增的字段名称 ;
keyProerty: 数据库自增的id赋值给此属性;

 <insert id="add2" useGeneratedKeys="true" keyProperty="id">
        insert userinfo(username, password)
        values(#{username}, #{password})
    </insert>

使用like查询

1.定义接口:
List getLikeList(@Param(“name”)String name);
2.实现接口:使用数据库中的函数 concat 拼接参数
示例:获取的最终结果:‘%name%’

<select id="getLikeList" resultType="com.example.demo.model.User">
        select * from user where
       	name like concat('%',#{name},'%')
    </select>

总结

✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!
文章来源地址https://www.toymoban.com/news/detail-628568.html

到了这里,关于认识 MyBatis + MyBatis如何使用 (MyBatis操作数据库)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • MySQL数据库之JDBC编程(从认识到操作)

    目录 前言 一.JDBC的认识 1.1JDBC的来源 1.2JDBC的概念 二.JDBC的导包  三.JDBC的四步操作 三.JDBC常用的类和方法  3.1常用类 3.2常见方法 🎁个人主页:tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 🎥 本文由 tq02 原创,首发于 CSDN🙉 🎄 本章讲解内容: JDBC的详细讲解 🎥学习

    2024年02月15日
    浏览(45)
  • MyBatis操作数据库

    MyBatis 是⼀款优秀的 持久层框架 ,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的

    2024年02月16日
    浏览(52)
  • MyBatis操作数据库实现

    说明:MyBatis是作用于三层架构开发,数据访问层(Data Access Object)的框架,用于访问数据库,对数据进行操作。 首先,创建一个SpringBoot模块,然后把MyBatis的环境搭建起来。因为MyBatis是作用于Dao层的,故先省去Service层,重点关注Dao层中与数据库的交流。 (1)创建Springboot模

    2024年02月08日
    浏览(54)
  • 如何使用PyQt进行数据库操作?

    首先,我们要知道,PyQt是一个非常强大的图形用户界面(GUI)开发库,它允许我们使用Python语言创建美观且高度交互的桌面应用程序。然而,对于数据库操作,PyQt并不直接提供此类功能。这需要我们使用其他的数据库库,例如SQLite、MySQL或PostgreSQL等。 对于新手来说,我建议

    2024年02月11日
    浏览(64)
  • 超细详解MyBatis操作数据库(1)

    MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。 MyBatis 去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的

    2024年02月04日
    浏览(45)
  • 【JavaEE & Spring】MyBatis 操作数据库(基础操作)

    使⽤MyBatis完成简单的增删改查操作, 参数传递. 掌握MyBatis的两种写法: 注解 和 XML⽅式 掌握MyBatis 相关的⽇志配置 在应⽤分层学习时, 我们了解到web应⽤程序⼀般分为三层,即:Controller、Service、Dao . 之前的案例中,请求流程如下: 浏览器发起请求, 先请求Controller, Controller接收

    2024年01月24日
    浏览(44)
  • Spring日志完结篇,MyBatis操作数据库(入门)

    目录 Spring可以对日志进行分目录打印 日志持久化(让日志进行长期的保存) MyBatis操作数据库(优秀的持久层框架) MyBatis的写法 开发规范: 单元测试的写法 传递参数 他的意思是说spring相关只打印INFO级别的标准,但是他也能获取到debug级别的日志 日志设置颜色(只能控制控制

    2024年02月04日
    浏览(37)
  • MyBatis-plus中的两种快捷操作数据库方式:1、mapper调用 2、ActiveRecord方式(简称AR) 二者的使用和区别介绍

            在使用MyBatis操作数据库时,需要频繁的写mapper层dao接口以及对应的配置文件和SQL语句,当功能方法繁杂,业务逻辑不复杂的时候,我们可以使用MyBatis的升级版MyBatis-Plus来代替我们写这些繁琐的配置文件和简单的SQL。 (1)书写或使用MP生成数据库表对应的实体类。

    2024年02月07日
    浏览(67)
  • 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日
    浏览(47)
  • 数据库操作不再困难,MyBatis动态Sql标签解析

    MyBatis缓存原理 Mybatis的CachingExecutor与二级缓存 Mybatis plugin 的使用及原理 MyBatis四大组件Executor、StatementHandler、ParameterHandler、ResultSetHandler 详解 MyBatis+Springboot 启动到SQL执行全流程 使用MyBatis,或者MyBatis-plus,有一项重要的开发技能就是写动态sql,动态sql能帮我们省略很多复杂逻

    2024年02月12日
    浏览(72)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包