# JdbcDemo_209 **Repository Path**: nieps/jdbc-demo_209 ## Basic Information - **Project Name**: JdbcDemo_209 - **Description**: jdbc案例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-04 - **Last Updated**: 2023-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Jdbc笔记 ## Connection对象 * 获取语句对象 * 操作事务 * 获取元数据 ## Statement语句 * 执行ddl语句 * 执行dml语句 insert update delete select 常用方法: * int executeUpdate(String sql) 执行ddl dml语句 返回影响的行数 * ResultSet executeQuery(String sql) 查询 返回结果集 * 获取自增主键 executeUpdate(String sql, int autoGeneratedKeys) ~~~java int rs = stat.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); //返回生成的主键 ResultSet result = stat.getGeneratedKeys(); if (result.next()) { System.out.println("主键是:" + result.getInt(1)); } ~~~ * 批量保存 addBatch executeBatch > 推荐 使用sql语句实现批量插入 ## CallableStatement 调用过程 ~~~mysql create PROCEDURE p_deleteOrder() begin delete from b_order2; end ; #根据用户名返回密码 create PROCEDURE p_queryPwd(_username varchar(20),out _pwd varchar(50)) begin select password into _pwd from user where username =_username; end; #创建函数 create FUNCTION f_queryById(_id int) RETURNS varchar(20) begin DECLARE _user varchar(20); select username into _user from user where id=_id; return _user; end; ~~~ ~~~java public void testCallPro2() throws SQLException { Connection conn = DbUtils.getInstance().getConn(); CallableStatement stat = conn.prepareCall("call p_queryPwd(?,?)"); //设置输入参数 stat.setString(1, "admin"); //输出参数 stat.registerOutParameter(2, JDBCType.VARCHAR); //执行 int rs = stat.executeUpdate(); System.out.println(rs); //获取输出参数的值 String pwd = stat.getString(2); System.out.println(pwd); } ~~~ ## ResultSet结果集 常用方法: * next() 将光标向前移动一行,如果移动后对应的行有数据返回true,否则返回false 。默认情况下光标在第一行的前面 ## ResultSetMetaData元数据 该类对象可以获取操作的表相关信息,如表的列数、每列的列名、查询列名等。 常用api: * getColumnCount() 获取表的总列数 * getColumnName 获取指定列的列名 * getColumnLabel 获取查询位置查询的列名 数据返回到前端页面,类型不能是ResultSet类型 * 单个结果 可以是javabean 或 map * 多个结果 List 集合,集合中存储javabean 或map ## Jdbc工具类 * 自己封装 * JdbcTempalte 是spring封装的一个工具类 * [common-dbutils ](https://gitee.com/apache/commons-dbutils?utm_source=alading&utm_campaign=repo) apache开源的jdbc * [hutool ](https://gitee.com/dromara/hutool?_from=gitee_search) 工具库