Mybatis学习笔记(一)【对原生jdbc程序中的问题总结】

mybatis学习笔记(1)-对原生jdbc程序中的问题总结 本文总结jdbc编程的一般步骤,总结这样编程存在的问题,并附上典型地jdbc示 阅读详情

Contents


本文总结jdbc编程的一般步骤,总结这样编程存在的问题,并附上典型地jdbc示例demo

jdbc编程步骤

  1. 加载数据库驱动
  2. 创建并获取数据库链接
  3. 创建jdbc statement对象
  4. 设置sql语句
  5. 设置sql语句中的参数(使用preparedStatement)
  6. 通过statement执行sql并获取结果
  7. 对sql执行结果进行解析处理
  8. 释放资源(resultSet、preparedstatement、connection)

问题总结

1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。

设想:使用数据库连接池管理数据库连接。

2.将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护。

设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

3.向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

设想:将sql语句及占位符号和参数全部配置在xml中。

4.从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。

设想:将查询的结果集,自动映射成java对象。

参考代码

package com.iot.mybatis.jdbc;

//import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Created by Administrator on 2016/2/21.
 */
public class JdbcTest {
    public static void main(String[] args) {
        //数据库连接
        Connection connection = null;
        //预编译的Statement,使用预编译的Statement提高数据库性能
        PreparedStatement preparedStatement = null;
        //结果集
        ResultSet resultSet = null;

        try {
            //加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");

            //通过驱动管理类获取数据库链接
            connection =  DriverManager.getConnection("jdbc:mysql://120.25.162.238:3306/mybatis001?characterEncoding=utf-8", "root", "123");
            //定义sql语句 ?表示占位符
            String sql = "select * from user where username = ?";
            //获取预处理statement
            preparedStatement = connection.prepareStatement(sql);
            //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
            preparedStatement.setString(1, "王五");
            //向数据库发出sql执行查询,查询出结果集
            resultSet =  preparedStatement.executeQuery();
            //遍历查询结果集
            while(resultSet.next()){
                System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            //释放资源
            if(resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(preparedStatement!=null){
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }

    }

}
mybatis与原生jdbc的对比 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。它由一组用Java语言编写的类和接口组成,是Java访问数据库的标准规范。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。 阅读详情

相关推荐

JDBC存在什么问题?MyBatis是如何解决的?

通过本文的深入分析,我们详细了解了JDBC的核心组件、使用过程中存在的问题,以及MyBatis是如何巧妙地解决这些问题的。对于一些资深的Java程序员,尤其是那些接触过早期JDBC项目的开发者来说,对JDBC的使用痛点可能深有体会。而现在,大部分项目都采用了Hibernate和MyBatis等优秀的对象关系映射(ORM)框架,这些框架对JDBC进行了很好的抽象和封装,提供了更加面向对象的数据库操作方式。因此,开发者不需要直接处理JDBC的API,而是直接面向ORM进行开发。

2401_85373732的博客 4342

(二)自定义 mybatis 之原生jdbc案例

自定义 Mybatis 之原生jdbc案例前言一、JDBC规范(掌握四个核心对象)二、JDBC原理三、原生jdbc开发步骤四、原生jdbc案例4.1、建库建表4.2、创建pojo对象4.3、jdbc代码4.4、测试程序4.5、原生jdbc存在的问题 前言 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。 JD

书山有鹿的博客 798

使用 MyBatis 解决原生 JDBC 编程的问题

一、原生 JDBC 开发步骤 加载数据库驱动 创建并获取数据库链接 创建 jdbc statement 对象 设置sql语句 设置sql语句中的参数(使用 preparedStatement) 通过 statement 执行 sql 并获取结果 对 sql 执行结果进行解析处理 释放资源(resultSet、preparedstatement、connection) public...

Noteligiable的博客 973

SpringBoot和数据库打交道:原生jdbc,整合Druid数据源,整合mybatis,整合JPA

原生jdbc 需要导入的依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <dependency> &lt

入梦镜 556

Vivado时序违例debug

显示了数据路径延迟。例如,对于违例路径,若布线延迟超过50%,说明该延迟是导致时序不能收敛的主要因素,因此可围绕降低布线延迟这一靶心达到时序收敛。对于跨时钟域路径,Requirement数值会有所变化,但如果数值为0.1,显然是不合理的。目的时钟路径单元,时钟从adc0_bufg/O输出,到达PLLE4_ADV,经过BUFGCE输出,最终到达SRLC32E移位寄存器,对应。源时钟路径单元,时钟从adc0_bufg/O输出,到达PLLE4_ADV,经过BUFGCE输出,最终到达FDRE触发器,对应。

weixin_44513618的博客 1618

Cadence Virtuoso里搞定斩波运放AC仿真:PSS+PAC保姆级设置避坑指南

然而,当工程师们尝试在Cadence Virtuoso环境中对这种特殊结构进行AC特性分析时,往往会遇到传统AC仿真方法失效的困境——这正是PSS(Periodic Steady-State)与PAC(Periodic AC)仿真组合大显身手的场景。实际项目中我们常采用"先快后精"的两步法:先用快速设置确认大体趋势,再针对关键频段进行精细仿真。例如某次设计迭代中,将harmonics从10增加到20后,发现在1MHz处的相位裕度估算误差达15°,这解释了之前样机测试时的振荡问题。

weixin_33508411的博客 449

系列三、MyBatis解决了JDBC中存在的哪些问题

解决方式:mybatis自动地将sql执行结果映射至java对象,可以通过statement中的resultType或者resultMap定义输出结果类型;(3)向sql语句传参麻烦,由于sql语句的where条件不确定,可能多也可能少,占位符需要和参数一一对应。(2)sql语句写在java代码中不易维护,实际应用中sql变化可能较大,sql变动需要改变java代码。(4)对结果集解析麻烦,sql变化导致解析代码变化,进而导致查询结果变化。

仰望星空,脚踏实地!安全感是自己给的,努力才是一辈子的安全感。 444

gnss变形监测基础(四)

监测站的数据采样率指的是监测站在单位时间内收集数据的频率,通常以赫兹(Hz)为单位。在GNSS变形监测中,数据采样率决定了监测系统能够捕捉到的变形动态变化的详细程度和时间分辨率。例如,一个采样率为1Hz的GNSS监测站意味着它每秒钟收集一次位置数据;而一个采样率为10Hz的监测站则每秒钟收集10次位置数据。较高的采样率能够提供更细致的时间序列数据,有助于分析快速变化的动态过程,如地震活动或建筑物的振动响应。然而,较高的采样率也意味着数据量更大,可能需要更多的存储空间和更强大的数据处理能力。

我的博客 1291

将JDBC ResultSet解析为JSON格式

JSON (JavaScript Object Notation) is a lightweight data-interchange format.

ameth 8656

Modbus CRC和LRC算法研究及代码实现

一、CRC(循环冗余校验) 1 CRC16实现流程 XOR = 异或 N = 字节的信息位 POLY = CRC16 多项式计算 = 1010 0000 0000 0001 (生成多项式 = 1 + x2 + x15 + x16) 在CRC16中,发送的第一个字节位低字节 2 CRC16实例推导 3 CRC16代码实现 unsigned short CRC16(unsigned char *a...

Hi, Boy 2891

Cadence Allegro 17.4学习记录开始02-原理图Capture CIS 17.4

Allegro的第一方网表与第三方网表有以下几个区别点;Ø 与Allegro实现交互式操作的是第一方网表,第三方网表时不可以实现交互式操作;Ø 第三方网表不能将器件的Value属性导入到PCB中,输出时以封装属性来代替Value属性,第一方网表是可以的;Ø 网表导入到PCB中时,第三方的网表需要指定事先指定好PCB封装库文件,并产生Device文件,才可以将网表导入到PCB中,第一方网表则可以直接导入。

qq_31444421的博客 1万+

Mybatis学习笔记1——原生JDBC总结

一、jdbc编程步骤(jdbc编程六部曲) 1.注册数据库驱动    1)创建驱动对象 :告知 JDBC  我们即将连接哪个数据库    2) 通过 DriverManager.registerDriver(driver) 注册驱动 2.获取数据库连接 URL    1)  通过 DriverManager.getConnection(url,user,pwd)    重点:Conne...

lifeflower 450

YOLO模型使用jupyterlab的方式进行预测/推理(示例)

首先相信很多使用过python的人都或多或少地了解过这个应用。是一个开源Web应用程序,可让用户创建和共享包含实时代码、公式、可视化和叙述文本的文档。用途包括:数据清理和转换、数值模拟、统计建模、等等。而Jupyter Lab则是Jupyter的下一代笔记本界面。是一个基于Web的交互式开发环境,用于Jupyter notebook、代码和数据。非常灵活,可支持数据科学、科学计算和机器学习领域的广泛工作。是可扩展和模块化的,其可编写插件来添加新组件并与现有组件相集成。

ocean00008899的博客 900

mybatis学习笔记-对原生jdbc程序中的问题总结

mybatis学习笔记1-对原生jdbc程序中的问题总结 jdbc编程步骤 问题总结 参考代码 本文总结jdbc编程的一般步骤,总结这样编程存在的问题,并附上典型地jdbc示例demo jdbc编程步骤 加载数据库驱动 创建并获取数据库链接 创建jdbc statement对象 设置sql语句 设置sql语句中的参数(使用preparedStatement) 通过statemen...

学不死的程序员 252

FPGA学习笔记(一)入门背景、软件及时钟约束的概念及程序下载与固化

使用正点原子的PFPGA开拓者V2学习,通过b站上正点原子的手把手教你学FPGA-基于开拓者V2学习。

贾saisai的博客 3277

15、分布式参数热交换器:建模、动态特性与控制

本文综述了分布式参数热交换器的建模、动态特性和控制方法。从热交换器的基本方程推导出发,探讨了一维流动、流动强迫、错流、螺旋和旋转再生式热交换器的建模方法,并分析了其动态行为和频率响应中的共振现象。同时,介绍了热交换器的模拟方法,包括数值模拟和近似方法,并讨论了多种控制策略,如常规控制、最优控制、数字控制以及自适应控制。最后,总结了热交换器研究的发展历程,并展望了未来的研究方向,包括建模精度提升、控制算法优化和跨学科融合等。

w8x9y0z1的博客 123

原生JDBC程序存在的问题以及MyBatis简介

使用原生JDBC连接存在的问题: 1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。 设想:使用数据库连接池管理数据库连接。 2、将sql语句硬编码到java代码中(并且分散在各个Java类中),如果sql语句修改(比如where条件改变),需要重新编译java代码,不利于系统维护。 设想:将sql语句统一集中配置在xml配置

枫轩缘 1690

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JDBC与MyBatis(一)

JDBC是用于连接和操作关系型数据库的API(应用程序编程接口)。通过JDBC,Java应用程序可以与各种数据库进行通信,通过执行SQL语句操作数据库。如执行查询、更新、插入和删除操作,以及处理结果集和执行事务等。MyBatis是实现了JDBC原理的高级框架:MyBatis 底层封装了JDBC,使得在开发时只需要关注SQL语句本身,不需要花费精力去处理如加载驱动、创建连接、创建statement等繁杂的过程。

/*多学习 不油腻*/ 3366

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MyBatis和原生JDBC

原生JDBC和MyBatis

qq_850535670的博客 685

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JPA和MyBatis和原生JDBC

没有最好的方案,只有最适合的方案。根据项目需求、团队技能和性能要求来选择合适的数据访问层实现方式。

刘皇叔说Java的博客 1045

MyBatis-Plus的批量插入与原生JDBC效率对比

MyBatis-Plus与原生JDBC在批量插入方面各有优劣。MyBatis-Plus通过saveBatch()方法提供高度封装的API,代码简洁且开发效率高,但默认情况下可能逐条插入,性能较低。通过配置批处理模式和事务管理,性能可接近原生JDBC。原生JDBC则需手动编写SQL、管理连接和批处理操作,代码量大但性能最优,适合高性能或复杂场景。MyBatis-Plus适合标准CRUD操作,而原生JDBC适合需要极致性能或高度定制化的场景。选择时需根据具体需求权衡开发效率与性能。

m0_61600773的博客 994

MyBatis详解(一):入门程序

一、对原生态jdbc程序中问题总结1.1、原始jdbc程序步骤:(1) 注册驱动JDBC类库向DriverManager注册数据库驱动·(2)建立连接(url、username、password)使用DriverManager提供的getConnection()方法连接到数据库(3)创建SQL语句,获取语句执行对象编写SQL语句,并建立SQL语句执行对象(4)执行语句执行SQL语句,并将结果集合返回到ResultSet中(5)处理结果(6)释放资源(注意关闭的顺序)

2501_90472645的博客 1848
上一篇: JQuery3.1.1源码解读(十九)【ajax】
下一篇: Mybatis学习笔记(二)【mybatis概述】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值