返回顶部
首页 > 资讯 > 后端开发 > JAVA >什么是MyBatis
  • 313
分享到

什么是MyBatis

mybatisjava数据库springPoweredby金山文档 2023-09-21 16:09:19 313人浏览 八月长安
摘要

一、mybatis概述 1.1 原始的JDBC操作 谈及mybatis,必然需要先了解Java和数据库的连接技术——JDBC(Java DataBase Connectivity)。但是原始JDBC操作中,却存在如下缺点: 数据库连接

一、mybatis概述

1.1 原始的JDBC操作

谈及mybatis,必然需要先了解Java和数据库的连接技术——JDBC(Java DataBase Connectivity)。但是原始JDBC操作中,却存在如下缺点

  1. 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能。

  1. sql语句在代码中硬编译,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变Java代码。

  1. 查询操作时,需要手动将结果集中的数据手动封装到实体中;插入操作时,需要手动将实体的数据设置到sql语句的占位符位置。

如下为原始JDBC操作:

public class JDBCDemo {    public static void main(String[] args) throws Exception{        //获取数据库连接对象        Connection conn = DriverManager.getConnection("jdbc:Mysql://localhost:3306/db1","root","root");        //定义sql语句        String sql = "select * from db1.emp";        //获取执行sql的对象Statement        Statement stmt = conn.createStatement();        //执行sql        ResultSet resultSet = stmt.executeQuery(sql);        //处理结果        while(resultSet.next()) {                         int id = resultSet.getInt(1);                    //获取id            String name = resultSet.getString("ename");             //获取姓名            System.out.println("id:" + id + " name:" + name);        }        //释放资源        stmt.close();        conn.close();    }}

1.2 如何克服JDBC固有缺陷

而面对上述缺点,我们的解决方案是:

  1. 使用数据库连接池技术(C3P0或者Druid)初始化连接资源;

  1. 将sql语句抽取到xml配置文件中(解耦合);

  1. 使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射(比较困难)。

因此,mybatis应运而生!

1.3 什么是MyBatis

mybatis 是一个优秀的基于java的持久层框架,它内部封装了 jdbc,使开发者只需要关注sql语句本身,而不需要花费精力 去处理加载驱动、创建连接、创建statement等繁杂的过程。

mybatis通过xml或注解的方式将要执行的各种 statement配 置起来,并通过java对象和statement中sql的动态参数进行 映射生成最终执行的sql语句。

最后mybatis框架执行sql并将结果映射为java对象并返回。采 用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了 封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作 。

二、MyBatis传统开发步骤

首先,我们可以先访问一下MyBatis官网地址:http://www.mybatis.org/mybatis-3/,这里有完整的mybatis的介绍。

2.1 添加MyBatis的坐标

mysql和mybatis的坐标引入pom.xml中。

    mysql    mysql-connector-java    5.1.32    org.mybatis    mybatis    3.5.7

2.2 创建一个实体

项目下创建一个User.java的实体。

public class User {    private int id;    private String username;    private String passWord;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", username='" + username + '\'' +                ", password='" + password + '\'' +                '}';    }}

2.3 编写映射文件

在文件夹resources下再创建一个mapper文件夹,再创建映射文件UserMapper.xml。后续我们的sql语句可以全部写到这里。

2.3.1先写一个通用的dtd约束头

2.3.2 再配置mapper

这里是select子句,当然也可以时insert、update等等。

            select * from db1.user    

同理,我们也可以同样得到添加数据、修改数据和删除数据类似的代码:

  • 添加数据:

sqlSession.insert("userMapper.add", user);
insert into user values(#{id},#{username},#{password})
  • 修改数据

sqlSession.update("userMapper.update", user);
update user set username=#{username},password=#{password} where id=#{id}
  • 删除数据

sqlSession.delete("userMapper.delete",3);
delete from user where id=#{id}

2.5.3 输出结果

执行编写好的代码,可以看到输出结果:

上面被选中的输出语句为:

[User{id=1, username='zhangsan', password='123'}, User{id=2, username='lisi', password='234'}, User{id=5, username='wangwu', password='abc'}, User{id=6, username='ray', password='111'}]

而我们再看一下数据库当中的数据,判断是否输出正常:

这里我们可以看到,一共4条数据,数据库中的数据已经被我们成功查找到。

三、总结

原来直接使用JDBC的sql代码被我们写入到了映射文件UserMapper.xml中,后续一些动态sql的加入更加简化了xml中代码量的书写。

而在Java代码中,我们只需要新建一些SqlSession对象便可以将xml中的sql语句直接使用。耦合度大大降低

但是我们也不难发现,这样的配置还是相对复杂的,因此就有了后来的MyBatisPlus来更加简化我们的代码书写。

来源地址:https://blog.csdn.net/weixin_51418964/article/details/128696139

--结束END--

本文标题: 什么是MyBatis

本文链接: https://lsjlt.com/news/414299.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 什么是MyBatis
    一、MyBatis概述 1.1 原始的JDBC操作 谈及mybatis,必然需要先了解Java和数据库的连接技术——JDBC(Java DataBase Connectivity)。但是原始JDBC操作中,却存在如下缺点: 数据库连接...
    99+
    2023-09-21
    mybatis java 数据库 spring Powered by 金山文档
  • 什么是MyBatis缓存
    这篇文章主要介绍“什么是MyBatis缓存”,在日常操作中,相信很多人在什么是MyBatis缓存问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是MyBatis缓存”的疑惑...
    99+
    2024-04-02
  • mybatis是什么意思
    这篇文章主要为大家展示了“mybatis是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mybatis是什么意思”这篇文章吧。什么是mybatis:Mybatis本质是一种半自动化的OR...
    99+
    2023-06-27
  • Mybatis优缺点是什么
    这篇文章将为大家详细讲解有关Mybatis优缺点是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Mybatis优缺点优点与传统的数据库访问技术相比,ORM有以下优点:...
    99+
    2024-04-02
  • MyBatis工作原理是什么
    这篇文章主要为大家展示了“MyBatis工作原理是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MyBatis工作原理是什么”这篇文章吧。MyBatis 的...
    99+
    2024-04-02
  • mybatis selectkey的用法是什么
    在MyBatis中,`selectKey`是一种用于在插入数据时获取自动生成的主键值的特殊语句。它可以用于动态生成主键并将其赋值给对...
    99+
    2023-09-29
    mybatis
  • mybatis distinct的用法是什么
    在MyBatis中,可以通过在SQL语句中使用DISTINCT关键字来进行去重操作,使查询结果中的重复记录只显示一次。 例如,可以使...
    99+
    2024-04-02
  • Mybatis是什么及怎么使用
    这篇文章主要介绍“Mybatis是什么及怎么使用”,在日常操作中,相信很多人在Mybatis是什么及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis是什么及怎么使用”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • mybatis plus是什么及怎么使用
    这篇文章主要介绍“mybatis plus是什么及怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mybatis plus是什么及怎么使用”文章能帮助大家解决问题。一、什么...
    99+
    2023-06-30
  • MyBatis插件的原理是什么
    本篇文章为大家展示了MyBatis插件的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 插件原理分析mybatis插件涉及到的几个类:我将以 E...
    99+
    2024-04-02
  • Hibernate和MyBatis的区别是什么
    这篇文章给大家分享的是有关Hibernate和MyBatis的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hibernate 和 MyBatis 的区别相同点都是对j...
    99+
    2024-04-02
  • Mybatis中#和$的区别是什么
    这篇文章主要介绍“Mybatis中#和$的区别是什么”,在日常操作中,相信很多人在Mybatis中#和$的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis中#和$的区别是什么”的疑惑有所...
    99+
    2023-06-22
  • Mybatis之objectfactory的作用是什么
    Mybatis的ObjectFactory是用于创建结果对象的工厂接口。它的作用是根据指定的类型创建新的结果对象。在Mybatis中...
    99+
    2023-09-20
    Mybatis
  • mybatis中createcriteria的用法是什么
    在MyBatis中,CreateCriteria是一个用于创建查询条件的方法。它是MyBatis提供的一种动态查询的方式,可以根据不...
    99+
    2023-09-29
    mybatis
  • mybatis中like的用法是什么
    在MyBatis中,可以使用`LIKE`关键字来进行模糊查询。`LIKE`关键字用于在数据库中搜索与指定模式匹配的值。在MyBati...
    99+
    2023-09-14
    mybatis
  • springboot和mybatis的关系是什么
    Spring Boot和MyBatis的关系是,Spring Boot是一个用于简化Spring应用程序开发的框架,而MyBatis...
    99+
    2023-10-11
    springboot mybatis
  • Mybatis与Hibernate的区别是什么
    Mybatis与Hibernate的区别是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. hibernate是全自动,而mybatis是半自动hibernate完全可以...
    99+
    2023-05-30
    mybatis hibernate
  • hibernate与mybatis的区别是什么
    这期内容当中小编将会给大家带来有关hibernate与mybatis的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Hibernate 是当前最流行的O/R mapping框架,它出身...
    99+
    2023-05-31
    hibernate mybatis 别是
  • mybatis框架的作用是什么
    MyBatis框架是一个用于Java语言的持久层框架,它的主要作用是简化数据库访问代码的开发。具体来说,MyBatis可以帮助开发者...
    99+
    2023-08-12
    mybatis
  • mybatis中mapper的作用是什么
    在MyBatis中,Mapper的作用是定义SQL映射关系,即将Java方法与SQL语句进行绑定。Mapper文件中包含了SQL语句...
    99+
    2024-03-04
    mybatis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作