JAVA WEB DAY 12_ MyBatis(day01)

这篇博客介绍了MyBatis框架的基础知识,包括数据库元数据、ParameterMetaData和ResultSetMetaData的概念及应用。重点讲解了MyBatis的入门步骤,如环境搭建、配置sqlMapConfig.xml和UserMapper.xml文件,以及如何编写测试类执行查询操作。通过实例展示了MyBatis如何简化数据库操作,提升开发效率。
摘要由CSDN通过智能技术生成

MyBatis

01_数据库元数据概述-[★★]

  • 元数据的概念:用来定义数据表的数据
  • 元数据的分类:
  1. 数据库元数据:用来获得数据库厂商的信息,驱动包的信息等
  2. 参数元数据:用来获取占位符的个数以及对应数据类型
  3. 结果集元数据:用获取结果集中的列的数量,列的类型,列的名字

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值