我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MyBatis怎么简化的JDBC

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MyBatis怎么简化的JDBC

这篇文章主要介绍了MyBatis怎么简化的JDBC的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis怎么简化的JDBC文章都会有所收获,下面我们一起来看看吧。

    MyBatis 作用

    MyBatis 是一个 持久层 框架,用于 简化JDBC开发

    持久层:即负责将数据保存到数据库的那一层代码;

    框架:半成品软件,可重用、通用的、软件基础代码模型;

    简化JDBC开发:JDBC存在 硬编码操作繁琐 的缺点;

    简化JDBC开发

    JDBC存在 硬编码操作繁琐 的缺点;

    完整JDBC代码
    // 注册驱动Class.forName("com.mysql.jdbc.Driver");// 获取Connection连接String url = "jdbc:mysql:///db1?useSSL=false";String uname = "root";String pwd="1234";// 接收输入的查询条件String gender = "男";// 定义sqlString sql = "select * from tb_user where gender = ?";// 获取pstmt对象PreparedStatement pstmt = conn.prepareStatement(sql);//设置?的值pstmt.setString(1,gender);// 执行sqlResultSet rs = pstmt.executeQuery();// 遍历Result,获取数据User user = null;ArrayList<User> users = new ArrayList<>();while (rs.next()){// 获取数据int id = rs.getInt("id");String username = rs.getString("username");String password = rs.getString("password");// 创建对象,设置属性值user = new User();user.setId(id);user.setUsername(username);user.setPassword(password);user.setGender(gender);//装入集合users.add(user);}
    硬编码

    上述代码中,注册驱动以及获取连接部分,有很多将字符串信息写到代码中去,即为 硬编码

    // 注册驱动Class.forName("com.mysql.jdbc.Driver");// 获取Connection连接String url = "jdbc:mysql:///db1?useSSL=false";String uname = "root";String pwd="1234";

    而若我们对字符串信息发生变动,比如更改密码等,我们就需要改动编码,然后重新编译,重新打包,重新运行;如此来看,代码维护性相当差。

    包括下述 sql语句部分,我们会频繁改动sql语句:

    // 接收输入的查询条件String gender = "男";// 定义sqlString sql = "select * from tb_user where gender = ?";

    每一次的改动都意味着大量的任务量。

    操作繁琐

    而在后续的 手动设置参数手动封装结果集 部分,JDBC的操作也是相当的繁琐。

    手动设置参数:

    // 获取pstmt对象PreparedStatement pstmt = conn.prepareStatement(sql);//设置?的值pstmt.setString(1,gender);

    手动封装结果集:

    // 遍历Result,获取数据User user = null;ArrayList<User> users = new ArrayList<>();while (rs.next()){// 获取数据int id = rs.getInt("id");String username = rs.getString("username");String password = rs.getString("password");// 创建对象,设置属性值user = new User();user.setId(id);user.setUsername(username);user.setPassword(password);user.setGender(gender);//装入集合users.add(user);}

    MyBatis 简化思路

    配置文件

    针对JDBC中 硬编码 问题,MyBatis 通过将字符串写到 配置文件 中;

    针对 注册驱动以及获取连接部分 配置信息案例:

    <!-- 连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///db1?useSSL=false"/><property name="username" value="root"/><property name="password" value="1234"/></dataSource><!-- 连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///db1?useSSL=false"/><property name="username" value="root"/><property name="password" value="1234"/></dataSource>

    针对 sql语句部分 配置信息案例:

    <select id="selectByGender" parameterType="string" resultType="com.xuhongduo.pojo.User">select * from tb_user where gender = #{gender};</select>

    自动完成

    针对JDBC中 操作繁琐 问题,MyBatis 尝试 自动完成

    List<User> users = sqlSession.selectList("test.selectByGender", "男")

    一行代码搞定 手动设置参数手动封装结果集 部分;

    补充:Mybatis是如何简化JDBC代码的

    MyBatis 主要是通过将 JDBC 的一些重复性、繁琐性的代码进行封装和抽象化,从而简化了原来 JDBC 代码的一些部分,具体来说,它主要简化了以下几个方面的代码:

    数据库连接和资源的管理

    在 JDBC 中,每次进行数据库操作都需要手动获取连接、创建 Statement 或者 PreparedStatement、执行 SQL 语句、处理结果集,并且需要手动关闭连接和释放资源。而在 MyBatis 中,这些步骤都被封装在 SqlSession 中,开发者只需要通过 SqlSession 获取 Mapper 接口对象,然后调用方法即可。

    // 原始 JDBC 代码Connection conn = DriverManager.getConnection(url, username, password);PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE name = ?");stmt.setString(1, "Tom");ResultSet rs = stmt.executeQuery();while (rs.next()) {    int id = rs.getInt("id");    String name = rs.getString("name");    int age = rs.getInt("age");    // ...}rs.close();stmt.close();conn.close();// MyBatis 代码SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List<User> users = userMapper.findUsersByName("Tom");sqlSession.close();

    SQL 语句的编写和处理

    在 JDBC 中,SQL 语句通常以字符串的形式直接写在代码中,不利于维护和调试,并且容易受到 SQL 注入等安全问题的影响。而在 MyBatis 中,SQL 语句通过 XML 或注解的形式进行编写和处理,可以更加灵活和方便地管理 SQL 语句,并且可以使用动态 SQL、命名参数等功能。

    // 原始 JDBC 代码PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE name = ?");stmt.setString(1, "Tom");// MyBatis XML 代码<select id="findUsersByName" parameterType="String" resultType="User">    SELECT * FROM users WHERE name = #{name}</select>// MyBatis 注解代码@Select("SELECT * FROM users WHERE name = #{name}")List<User> findUsersByName(@Param("name") String name);

    结果集的映射

    在 JDBC 中,将查询结果集映射到 Java 对象通常需要手动进行一些处理,例如通过 ResultSet.getXXX() 方法获取每个字段的值,然后手动设置到 Java 对象中。而在 MyBatis 中,可以通过配置 resultMap 或使用注解等方式将查询结果集映射到 Java 对象中,大大简化了代码。

    // 原始 JDBC 代码ResultSet rs = stmt.executeQuery();List<User> users = new ArrayList<>();while (rs.next()) {    User user = new User();    user.setId(rs.getInt("id"));    user.setName(rs.getString("name"));    user.setAge(rs.getInt("age"));    users.add(user);}// MyBatis XML 代码<resultMap id="userMap" type="User">    <id property="id" column="id"/>    <result property="name" column="name"/>    <result property="age" column="age"/></resultMap>// MyBatis 注解代码@Results({@Result(property = "id", column = "id"),@Result(property = "name", column = "name"),@Result(property = "age", column = "age")})List<User> findUsersByName(@Param("name") String name);

    通过以上三个方面的简化,MyBatis 提高了代码的可读性、可维护性和可扩展性,使得开发者可以更加专注于业务逻辑的实现,而不需要过多关注底层的数据库访问细节。

    关于“MyBatis怎么简化的JDBC”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MyBatis怎么简化的JDBC”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    MyBatis怎么简化的JDBC

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    MyBatis怎么简化的JDBC

    这篇文章主要介绍了MyBatis怎么简化的JDBC的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis怎么简化的JDBC文章都会有所收获,下面我们一起来看看吧。MyBatis 作用MyBatis 是一个
    2023-07-05

    MyBatis如何简化的JDBC(思路详解)

    MyBatis是一个持久层框架,用于简化JDBC开发,这篇文章主要介绍了MyBatis如何简化的JDBC(思路详解),需要的朋友可以参考下
    2023-03-21

    详解如何使用MyBatis简化JDBC开发

    JavaEE 企业级 Java 项目中的经典三层架构为表现层,业务层和持久层.MyBatis 对 JDBC 代码进行了封装,作为一款优秀的持久层框架,专门用于简化JDBC开发.本文主要介绍一下如何使用MyBatis简化JDBC开发,需要的可以参考一下
    2023-01-29

    mybatis怎么封装jdbc

    MyBatis是一个Java持久化框架,它提供了封装JDBC的功能。下面是使用MyBatis封装JDBC的一般步骤:1. 配置MyBatis:创建`mybatis-config.xml`文件,并配置数据源、映射器等。可以指定JDBC驱动、连
    2023-10-27

    jdbc和mybatis的流式查询怎么用

    这篇文章将为大家详细讲解有关jdbc和mybatis的流式查询怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jdbc流式查询:jdbc的流式查询需要在生成PreparedStatement的时候设置
    2023-06-25

    关于使用MyBatis简化JDBC开发和解决SQL语句警告的问题

    这篇文章主要介绍了关于使用MyBatis简化JDBC开发和解决SQL语句警告的问题,如果idea和数据库没有建立链接,idea不识别表的信息,就会出现SQL语句的警告,需要的朋友可以参考下
    2023-05-18

    mybatis和jdbc的区别是什么

    MyBatis 和 JDBC 都是用于在 Java 应用程序中访问数据库的工具,但它们之间有一些重要的区别:ORM 框架 vs 简单的 SQL 编写:MyBatis 是一个基于 ORM(对象关系映射)的持久层框架,它允许开发人员使用 XML
    mybatis和jdbc的区别是什么
    2024-03-07

    mybatis封装jdbc的方法是什么

    MyBatis封装了JDBC的方法,通过映射SQL语句和Java方法,实现了数据操作的简化。MyBatis的主要封装方法包括:使用Mapper接口定义数据访问方法,通过@Select、@Insert、@Update、@Delete等注解指定
    mybatis封装jdbc的方法是什么
    2024-03-07

    怎么用MyBatis创建一个简单的程序

    这篇文章主要介绍“怎么用MyBatis创建一个简单的程序”,在日常操作中,相信很多人在怎么用MyBatis创建一个简单的程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用MyBatis创建一个简单的程序
    2023-06-29

    C++怎么简化路径

    这篇文章主要介绍“C++怎么简化路径”,在日常操作中,相信很多人在C++怎么简化路径问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么简化路径”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!Simpl
    2023-06-20

    JDBC中的DatabaseMetaData怎么用

    在JDBC中,DatabaseMetaData是一个接口,它提供了关于数据库的元数据信息,例如数据库的表、列、索引等信息。可以使用以下步骤来使用DatabaseMetaData:1. 获取Connection对象:首先,你需要获取一个Con
    2023-10-23

    jdbc的resultset怎么使用

    在使用JDBC的ResultSet之前,需要先创建一个Statement对象并执行查询操作,然后将查询结果保存在ResultSet中。接下来可以通过ResultSet对象来对查询结果进行操作。以下是一个使用JDBC的ResultSet的示例
    2023-08-08

    JDBC的cachedrowset怎么使用

    JDBC的CachedRowSet是一个可缓存查询结果的ResultSet实现,可以在断开数据库连接后继续使用。下面是使用CachedRowSet的一些基本步骤:1. 导入相关的类和包:```import javax.sql.rowset.
    2023-08-08

    怎么进行JDBC的分析

    这期内容当中小编将会给大家带来有关怎么进行JDBC的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInt
    2023-06-17

    Java怎么简化条件表达式

    这篇文章主要介绍“Java怎么简化条件表达式”,在日常操作中,相信很多人在Java怎么简化条件表达式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么简化条件表达式”的疑惑有所帮助!接下来,请跟着小编
    2023-07-02

    SpringBoot怎么简化Web应用程序的开发

    Spring Boot 是一个开箱即用的微服务框架,它简化了 Spring 应用程序的开发过程。以下是 Spring Boot 简化 Web 应用程序开发的几种方法:自动配置:Spring Boot 提供了许多自动配置功能,可以根据项目的需
    SpringBoot怎么简化Web应用程序的开发
    2024-04-09

    LINQ组合查询怎么简化编程

    本篇内容介绍了“LINQ组合查询怎么简化编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 初始化数组通常,我们需要把数组的值初始化为相
    2023-06-17

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录