jdbc

Java中DAO的实现

时光怂恿深爱的人放手 提交于 2020-03-21 01:20:12
J2EE 开发人员使用数据访问对象(Data Access Object DAO)设计模式,以便将低级别的数据访问逻辑与高级别的业务逻辑分离。实现 DAO 模式涉及比编写数据访问代码更多的内容。在本文中,Java 开发人员 Sean C. Sullivan 讨论了 DAO 编程中三个常常被忽略的方面:事务界定、异常处理和日志记录。 图 1 显示了应用程序和数据源之间的关系: 图 1. 应用程序和数据源 在整个应用程序中使用数据访问对象(DAO)使我们可以将底层数据访问逻辑与业务逻辑分离开来。我们构建了为每一个数据源提供 CRUD (创建、读取、更新、删除)操作的 DAO 类。 在本文中,我将为您介绍构建更好的 DAO 类的 DAO 实现策略和技术。更确切地说,我将讨论日志、异常处理和事务界定。您将学到如何将这三者结合到自己的 DAO 类中。本文假定您熟悉 JDBC API、SQL 和关系数据库编程。 我们将以对 DAO 设计模式和数据访问对象的概述开始。 DAO基础 DAO 模式是标准 J2EE 设计模式之一。开发人员用这种模式将底层数据访问操作与高层业务逻辑分离开。一个典型的 DAO 实现有以下组件: 一个 DAO 工厂类 一个 DAO 接口 一个实现了 DAO 接口的具体类 数据传输对象(有时称为值对象) 具体的 DAO 类包含访问特定数据源的数据的逻辑

spring-boot数据访问

一个人想着一个人 提交于 2020-03-20 23:41:56
一、简介 使用springboot可以与jdbc、mybatis、spring data等结合进行数据访问 对于数据访问层,无论是SQL好NoSQL,springBoot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。 各种xxxTemplate,xxxRepository来简化我们对数据访问层的操作。对我们来说只需要进行简单的设置即可。 二、整合JDBC 1)、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-version}</version> <scope>runtime</scope> <

JDBC学习笔记(4)——PreparedStatement的使用

亡梦爱人 提交于 2020-03-20 22:02:00
PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Statement的子接口,我们在执行查询或者更新数据表数据的时候,拼写SQL语句是一个很费力并且容易出错的事情,PreparedStatement可以简化这样的一个过程. PreParedStatement 1).why?我们为什么要使用它 使用Statement需要进行拼写SQl语句,辛苦并且容易出错,之前使用Statement的SQL语句的形式是这样的 String sql = "insert into examstudent" + " values(" + student.getFlowId() + "," + student.getType() + ",'" + student.getIdCard() + "','" + student.getExamCard() + "','" + student.getStudentName() + "','" + student.getLocation() + "'," + student.getGrade() + ")"; 使用PreparedStatement:是Statement的子接口,可以传入 带占位符 的SQL语句

JDBC中的Statement和PreparedStatement的区别

倾然丶 夕夏残阳落幕 提交于 2020-03-20 21:14:59
PreparedStatement是什么? PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快; public class PreparedStmtExample { public static void main ( String args [ ] ) throws SQLException { Connection conn = DriverManager . getConnection ( "mysql:\\localhost:1520" , "root" , "root" ) ; PreparedStatement preStatement = conn . prepareStatement ( "select distinct loan_type from loan where bank=?" ) ; preStatement . setString ( 1 , "Citibank" ) ; ResultSet

在JDBC中使用RowSet

不问归期 提交于 2020-03-20 07:00:25
原文地址: http://www.yiidian.com/jdbc/jdbc-jdbcrowset.html 1 什么是JDBC的RowSet? 与ResultSet相比,RowSet默认是可滚动、可更新、可序列化的结果集,而且作为JavaBean使用,因此能方便的在网络上传输,用于同步两端的数据,对于离线RowSet而言,程序在创建RowSet时已经把数据从底层数据库读取到了内存,因此可以充分利用计算机的内存,从而降低数据库服务器的负载,提高程序性能。RowSet接口继承了ResultSet接口。 RowSet接口的实现类如下: JdbcRowSet CachedRowSet WebRowSet JoinRowSet FilteredRowSet 2 RowSet的好处 使用RowSet的优点如下: RowSet扩展了ResultSet接口,因此它的功能比ResultSet更加强大。 RowSet对表数据的遍历更加灵活,可前后滚动。 RowSet支持缓存数据,即在Connection关闭后也可以使用。 RowSet支持新的连接方式,无需Connection即可连接数据库,还支持读取XML数据源。 RowSet支持Filter(过滤数据)。 RowSet还支持表的Join操作。 3 RowSet核心代码示例 JdbcRowSet rowSet = RowSetProvider

JDBC-执行SQL语句

倖福魔咒の 提交于 2020-03-19 19:19:25
名词解释 ODBC: Open Database Connectivity JDBC: Java Database Connectivity JDBC API: 管理数据库,用于编成 JDBC Driver API: 连接数据库,加载数据库驱动 JDBC API DriverManager 装载驱动程序 Connection 连接数据库 常用方法 方法 说明 返回类型 createStatement() 创建查询对象 Statement prepareStatement() 创建预编译查询对象 PreparedStatement prepareCall("{call 存储过程名 (?, ?, ?...)}") 每个 ? 表示一个参数 CallableStatement commit() 提交更改至数据库 返回执行的记录数 int close() 关闭数据库连接 Statement 执行SQL语句 常用方法 方法 说明 返回类型 executeQuery(String SQL 查询语句 ) 执行该 SQL 查询 ResultSet executeUpdate(String SQL 语句 ) 执行 Insert 、 Update 、 Delete 语句 返回执行成功的记录数 int close() 关闭查询对象,释放资源 PreparedStatement 执行预编译的SQL语句

java开发中jdbc连接数据 库的操作代码

早过忘川 提交于 2020-03-19 19:14:38
3 月,跳不动了?>>> JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含 7 个步骤: 1 、加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。 例如: try { //加载MySql的驱动类 Class.forName( "com.mysql.jdbc.Driver" ) ; } catch (ClassNotFoundException e){ System.out.println( "找不到驱动程序类 ,加载驱动失败!" ); e.printStackTrace() ; } 成功加载后,会将Driver类的实例注册到DriverManager类中。 2 、提供JDBC连接的URL •连接URL定义了连接数据库时的协议、子协议、数据源标识。 •书写形式:协议:子协议:数据源标识 协议:在JDBC中总是以jdbc开始 子协议:是桥连接的驱动程序或是数据库管理系统名称。 数据源标识:标记找到数据库来源的地址与连接端口。 例如:(MySql的连接URL) jdbc:mysql: //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;

JDBC--通过Statement执行更新、查询操作

前提是你 提交于 2020-03-19 17:55:21
3 月,跳不动了?>>> 一、Statement 1.通过调用 Connection 对象的 createStatement 方法创建该对象 2.该对象用于执行静态的 SQL 语句,并且返回执行结果 3.Statement 接口中定义了下列方法用于执行 SQL 语句: ResultSet excuteQuery(String sql) int excuteUpdate(String sql) 程序----向数据表中插入一条记录 /** * 通过 JDBC向指定的数据表中插入一条记录 * 1. Statement: 用于执行 SQL语句的对象 * 1.1 通过 Connection的 createStatement()方法来获取 * 1.2 通过 executeUpdate(sql)可以执行 SQL语句 * 1.3 传入的 SQL可以是 INSERT、UPDATE或 DELETE,但不能是 SELECT。 * * 2. Connection,Statement都是程序与数据库的连接资源,使用后一定要关闭 * 需要在finally中关闭 */ @Test public void test5() throws Exception { Connection conn = null; Statement statement = null; try { //1. 获取数据库连接 conn =

一、Mybatis与JDBC的区别

放肆的年华 提交于 2020-03-19 07:16:32
1、什么是MyBatis?   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。   iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。   MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。 回到顶部 2、为什么会有 MyBatis?   通过上面的介绍,我们知道 MyBatis 是来和数据库打交道。那么在这之前,我们是使用 JDBC 来对数据库进行增删改查等一系列操作的,而我们之所以会放弃使用 JDBC,转而使用 MyBatis 框架,这是为什么呢?或者说使用 MyBatis 对比 JDBC 有什么好处?   下面我们通过一段 JDBC 对 Person

mybatis 详解(一)

纵然是瞬间 提交于 2020-03-19 04:33:09
http://www.cnblogs.com/ysocean/p/7271600.html 1、什么是MyBatis?   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。   iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。   MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。 2、为什么会有 MyBatis?   通过上面的介绍,我们知道 MyBatis 是来和数据库打交道。那么在这之前,我们是使用 JDBC 来对数据库进行增删改查等一系列操作的,而我们之所以会放弃使用 JDBC,转而使用 MyBatis 框架,这是为什么呢?或者说使用 MyBatis