JDBCTemplate 数据库 元数据 及 编码规范之三层架构
1 JDBCTemplate工具类(重点)
2 模拟JDBCTemplate的功能–数据库的元数据(了解)
3 三层架构(重点)
JDBCTemplate
概念
是Spring框架提供的子工具 是对jdbc操作数据库的封装
出现的目的
java代码操作数据库数据的时候,使用的必须是JDBC
JDBC缺点:
1 代码量太多太繁琐
2 创建连接和销毁连接的耗时太长
jdbc+连接池:解决了创建连接和销毁连接的耗时问题,但是代码量更多了
jdbcTemplate(最终版) 封装了jdbc+连接池,是代码开发操作数据库更加的简单
作用
1 大大简化了jdbc操作数据库的代码量
2 把从数据库查询出来的数据自动封装(map,对象,集合...)
JDBCTemplate的使用
JdbcTemplate使用的快速入门:
1 导包 5个包
2 调用API
1 核心类 JdbcTemplate 作用:用来操作sql语句的
2 方法:
execute() --- 操作DDL语句 建库建表的 了解
update() --- 操作DML语句 数据的增删改
queryxxx()--- 操作DQL语句 数据的查询 查询出来的数据自动封装容器中
JdbcTemplate查询数据的封装方法(必须会)
queryForObject(String sql,Class requiredType,Object...args); 单行单列(指定返回类型)
---map
queryForMap(String sql,Object..args); 单行多列(map)
queryForList(String sql,Object..args); 多行多列 (list<map>)
--对象(核心重点)
queryForObject(sql, new BeanPropertyRowMapper<>(类名.class), Object..args); 单行多列(对象)
query(sql, new BeanPropertyRowMapper<>(类名.class), Object..args); 多行多列 (list<对象>)
元数据(了解即可)
元数据: 定义数据(表名 数据名 列名 列类型…)的数据就是元数据
结果集元数据:ResultSetMetaData
作用:通过ResultSetMetaData可以获取结果集数据中列的个数 列的类型 表名 数据库名
获取ResultSetMetaData的方式: ResultSetMetaData metaData = resultSet.getMetaData();
列的个数 metaData.getColumnCount()
当前列的名称 metaData.getColumnLabel(序号)
当前列的类型 metaData.getColumnTypeName(序号)
当前列来自于哪个表 metaData.getTableName(序号)
当前列来自于哪个库 metaData.getCatalogName(序号)
参数元数据:ParameterMetaData
作用:通过ParameterMetaData可以获取sql语句占位符的个数和参数类型
获取ParameterMetaData的方式:
ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
获取sql语句占位符的个数:parameterMetaData.getParameterCount();
获取占位对应列的参数类型:parameterMetaData.getParameterType(占位符的序号); mysql不支持 oracle支持
需求:刚才使用JdbcTemplate的update方法 发现可以对数据进行增删改
使用元数据模拟JdbcTemplate的update方法,也能实现数据的增删改
实现:JdbcTemplate的update方法的底层
update方法特点:第一个参数会接受一个String类型sql 第二个会接受一个Object类型数组
三层架构
我们之前的登录案例是将用户输入,数据库的操作,逻辑处理放在了同一个方法中,这样虽然非常直观,
但是等项目做大的时候非常不好维护代码
注册(三层架构)
数据来源于控制台 将用户写入控制台的账号和密码进行注册(User表)
1 当用户输入用户名的时候,先做用户名的校验(是否存在)
存在:给提示信息,结束程序
不存在:继续获取用户输入的密码
2 收集完用户名和密码实现注册功能
登录