文章目录
- MyBatis
MyBatis
01_数据库元数据概述-[★★]
- 元数据的概念:用来定义数据表的数据
- 元数据的分类:
- 数据库元数据:用来获得数据库厂商的信息,驱动包的信息等
- 参数元数据:用来获取占位符的个数以及对应数据类型
- 结果集元数据:用获取结果集中的列的数量,列的类型,列的名字
02_ParameterMetaData 元数据-[★★★]
- ParameterMetaData对象常用方法
ParameterMetaData对象常用方法 | 说明 |
---|---|
int getParameterCount() | 获得占位符问号个数 |
String getParameterTypeName(int param) | 获得占位符问号的数据类型 |
- 需求:得到SQL语句的参数元数据。
- 创建学生表:学号,姓名,性别,生日
-- 创建学生表:学号,姓名,性别,生日
create database day13;
use day13;
create table student(
id int primary key auto_increment,
name varchar(20) not null,
gender char(1),
birthday date
);
- 示例代码
/**
* 目标:掌握参数元数据的作用和常用方法
如何获取ParameterMetaData对象?
通过PreparedStatement的方法获取:ParameterMetaData getParameterMetaData()
ParameterMetaData接口常用方法:
* int getParameterCount():获得参数个数
* String getParameterTypeName(int param) 获得参数类型,都是varchar类型
需求:添加一个学生
*/
public class Demo01 {
public static void main(String[] args) throws Exception{
// 1. 获得连接对象
Connection conn = DataSourceUtil.getConnection();
// 2. 准备SQL语句
String sql = "insert into student values(null,?,?,?)";
// 3. 获得预编译对象
PreparedStatement ps = conn.prepareStatement(sql);
// 4. 获得参数元数据对象
ParameterMetaData pmd = ps.getParameterMetaData();
// 4.1 获得占位符个数
int count = pmd.getParameterCount();
System.out.println("count = " +count);
// 4.2 获得每个占位符的类型
for (int index = 1; index <= count; index++) {
// 4.3 根据索引获得占位符类型(索引默认从1开始)
String typeName = pmd.getParameterTypeName(index);
System.out.println("typeName = " + typeName);
}
// 5. 执行SQL
// 5.1 给问号赋值
ps.setString(1, "小泽");
ps.setString(2, "女");
ps.setString(3, "1999-01-20");
// 5.2 执行SQL
int row = ps.executeUpdate();
System.out.println("row = " +row);
// 6. 关闭资源
DataSourceUtil.close(conn, ps);
}
}
- 注意事项
默认情况下:因为MySQL驱动的原因,不支持得到参数元数据的类型。
MySQL驱动对参数元数据的数据类型支持不理想,需要如下配置才能得到参数的MySQL数据类型,而且只能得到VARCHAR类型,如果不配置这个参数则会出现异常。 |
---|
jdbc:mysql://localhost:3306/数据库名?generateSimpleParameterMetadata=true |
03_ResultSetMetaData 元数据-[★★★]
- 结果集元数据对象的作用:用来获取查询结果中的列的数量、列的名字、列的类型
- 如何获得结果集元数据对象:通过ResultSet对象的方法获取:
ResultSetMetaData getMetaData();
- ResultSetMetaData对象常用方法
ResultSetMetaData对象常用方法 | 说明 |
---|---|
int getColumnCount() | 获取列的个数 |
String getColumnName(int column) | 获得指定列的名字 |
String getColumnTypeName(int column) | 获得指定列的类型 |
-
示例代码
-
只有查询才会有结果集元素数据。
/**
目标:掌握结果集元数据的作用和常用方法
结果集元数据的作用:用来获取查询结果中的列的数量、列的名字、列的类型
如何获取ResultSetMetaData对象:
通过ResultSet对象的方法获取:ResultSetMetaData getMetaData();
*/
public class Demo01 {
public static void main(String[] args) throws Exception {
// 1. 获取连接对象
Connection conn = DataSourceUtil.getConnection();
// 2. 获得预编译对象
PreparedStatement ps = conn.prepareStatement("select id,name from student");
// 3. 执行查询操作
ResultSet rs = ps.executeQuery();
// 4. 获得结果集元数据对象
ResultSetMetaData rmd = rs.getMetaData();
// 4.1 获得列的数量
int columnCount = rmd.getColumnCount();
System.out.println("columnCount = " +columnCount);
for (int index = 0