1.准备工作
1.1 MySQL建立表与初始化数据
create table es_t_shop_affiche(
afficheid int primary key,
affichetitle varchar(200)
)ENGINE=INNODB default charset utf8;
insert into es_t_shop_affiche values(10001,'admin');
insert into es_t_shop_affiche values(10001,'root');
1.2 编写创建与关闭数据库连接的工具类
说明:该类只为演示功能,真正投入生产系统需借助连接池,后续会给出连接池最基本的实现
并且此处需要引入MySQL的驱动,本例使用mysql-connector-java-5.1.23-bin.jar
package com.yli.demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * 创建与关闭JDBC连接 * @author yli * */ public class ConnectionUtil { /** * 创建连接 * @return */ public static Connection getConnection() { String url = "jdbc:mysql://localhost:3306/world"; String user = "root"; String password = "123456"; Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return conn; } /** * 关闭连接 * @param conn */ public static void close(Connection conn){ if(null != conn) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
1.3 为方便查询结果集ResultSet编写工具类RowMapper
package com.yli.dal.util; import java.lang.reflect.Field; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 简单的结果集与Java对象转换 * @author yli * * @param <T> */ public class RowMapper<T> { /** * 遍历结果集,将数据转换成指定的class类型<br> * 适合结果集包含多条记录 * @param classes * @param rs * @return */ public static <T> List<T> getForList(Class<T> classes, ResultSet rs) { List<T> resultList = new ArrayList<T>(); Field[] fileds = classes.getDeclaredFields(); try { T object; while (rs.next()) { object = getObject(classes, rs, fileds); if (null != object) { resultList.add(object); } } return resultList; } catch (SQLException e) { e.printStackTrace(); } return null; } /** * 遍历结果集,将数据转换成指定的class类型<br> * 适合结果集包含单条记录,如果不是则取第一条 * @param classes * @param rs * @return */ public static <T> T getForObject(Class<T> classes, ResultSet rs) { List<T> resultList = getForList(classes, rs); if (null != resultList && !resultList.isEmpty()) { return resultList.get(0); } return null; } /** * 遍历结果集,将数据转换成指定的List<Map<String, Object>>类型<br> * 适合结果集包含单条记录 * @param rs */ public static List<Map<String, Object>> getForList(ResultSet rs) { List<Map<String, Object>> resultList = null; try { resultList = new ArrayList<Map<String, Object>>(); ResultSetMetaData rsMeta = rs.getMetaData(); int columnCount = rsMeta.getColumnCount(); int index; String columnLabel; while (rs.next()) { Map<String, Object> resultMap = new HashMap<String, Object>(); for (index = 1; index <= columnCount; index++) { columnLabel = rsMeta.getColumnLabel(index); resultMap.put(columnLabel, rs.getObject(columnLabel)); } resultList.add(resultMap); } } catch (SQLException e) { e.printStackTrace(); } return resultList; } /** * 遍历结果集,将数据转换成指定的Map<String, Object>类型<br> * 适合结果集包含单条记录,如果不是则取第一条 * @param rs */ public static Map<String, Object> getForMap(ResultSet rs) { List<Map<String, Object>> resultList = getForList(rs); if (null != resultList && !resultList.isEmpty()) { return resultList.get(0); } return null; } private static <T> T getObject(Class<T> classes, ResultSet rs, Field[] fileds) { T object = null; try { object = classes.newInstance(); for (Field field : fileds) { String fieldName = field.getName(); field.setAccessible(true); field.set(object, rs.getObject(fieldName)); } } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return object; } }
1.4 为方便本例演示,编写与ES_T_SHOP_AFFICHE表结构字段对应的实体类
package com.yli.entity; /** * 简单实体,与数据表ES_T_SHOP_AFFICHE字段一一对应<br> * 方便将结果集ResultSet映射到该实体上 * @author yli * */ public class ShopAffiche { private long afficheid; private String affichetitle; public long getAfficheid() { return afficheid; } public void setAfficheid(long afficheid) { this.afficheid = afficheid; } public String getAffichetitle() { return affichetitle; } public void setAffichetitle(String affichetitle) { this.affichetitle = affichetitle; } @Override public String toString() { return "[afficheid=" + afficheid + ";affichetitle=" + affichetitle + "]"; } }
相关推荐
JAVAJDBC基础.pdf
Java JDBC编程总结 Hibernate、TopLink等OR Mapping操作数据库的技术都是建立JDBC技术之上的,实际来说,他们的性能和JDBC是有很大...暂且不说这些孰优孰劣的话了,再次主要是对Java的基础技术做个总结,以加深认识。
重难点之JAVAJDBC基础.pdf
JAVA数据库编程JDBC 与 Java数据库接口JDBC入门基础讲座 与 JDBC API数据库编程实作教材-程序设计-JAVA JDBC全压缩包.rar
学习java DAO JDBC 基础代码,客户购买物品和订单事件
java基础JDBC连接Mysql数据库。
教程名称: 【动力节点】Java经典教程_JDBC视频教程 本套Java视频教程中讲解了Java编程语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了...
jdbc基础教材 数据库操作基础知识 入门书籍
帮助java初学者学习JDBC,提供一个简单的demo供大家下载
JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用...
java环境下的JDBC编程基础,详细说明JDBC工作原理及代码实现
实现了员工的增删改查 可以连接数据库 含有数据库脚本 适合Java学习过后的小作业
java链接数据库的常用方法-- JDBC。 基本的JDBC知识介绍和使用。 可快速入门,也可当手册使用。 另外,最后还有一个JDBC工具类,以供使用。
JDBC扩展包,其中包含基础包和拓展包,支持jdbc与数据库交互的更多功能,亲测可用,各jar包间无冲突
Java中JDBC增删改查相关基础练习的实例源代码
Java JDBC(Java Database Connectivity)是Java编程语言中用于与数据库进行交互的标准API。下面是使用Java JDBC进行数据库操作的基本步骤: 加载数据库驱动程序。 建立数据库连接。 创建和执行SQL语句。 处理结果集...
JavaEE的知识点,包括servlet,jdbc,js,ssh框架的基础,原理。 收集总结了许多学长面试不同公司时面到的实际面试题。以及分享了回答问题的经验。 自己在去年10月份校招时,感觉有点用,特别是在给自己查漏补缺方面...
完整版精品java课件 Java基础入门教程 Java程序设计 第10章 JDBC数据库编程(共21页).ppt 完整版精品java课件 Java基础入门教程 Java程序设计 第11章 图形用户界面1(共27页).ppt 完整版精品java课件 Java基础入门...
Java高级教程课件 java数据库教程 JDBC教程 2-oracle基础(1)(共48页).ppt Java高级教程课件 java数据库教程 JDBC教程 2-oracle基础(2)(共48页).ppt Java高级教程课件 java数据库教程 JDBC教程 3-oracle查询和SQL...
JAVA_3 JAVA语言基础 位运算 JAVA_3 JAVA语言基础 JAVA_4 Java面向对象特性 JAVA_5 高级语言特征 JAVA_6 异常处理Exceptions JAVA_7 IO输入输出 JAVA_8 AWT图形界面编程 JFC AWT Swing JAVA_8 AWT图形界面编程 JFC ...