代码拉取完成,页面将自动刷新
同步操作将从 byx/jdbc-utils 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
JdbcUtils
是JDBC的工具类,封装了JDBC连接获取、语句构造、资源释放等繁琐步骤,对外提供简洁的数据库查询和更新操作接口。
<repositories>
<repository>
<id>byx-maven-repo</id>
<name>byx-maven-repo</name>
<url>https://gitee.com/byx2000/maven-repo/raw/master/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>byx.util</groupId>
<artifactId>JdbcUtils</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
resources
目录下新建一个db.properties
文件,写入如下配置:配置 | 说明 |
---|---|
jdbc.driver |
数据库驱动类名 |
jdbc.url |
连接字符串 |
jdbc.username |
用户名 |
jdbc.password |
密码 |
JdbcUtils
中包含了若干形如queryXXX
的查询方法,具体说明如下:
方法 | 说明 |
---|---|
T query(String sql, RecordMapper<T> recordMapper, Object... params) |
查询数据库并转换结果集 |
List<T> queryList(String sql, RowMapper<T> rowMapper, Object... params) |
查询数据库,对结果集的每一行进行转换,然后将所有行封装成列表 |
List<T> queryList(String sql, Class<T> type, Object... params) |
查询数据库,将结果集的每一行转换成JavaBean,然后将所有行封装成列表 |
T querySingleValue(String sql, Class<T> type, Object... params) |
查询数据库,返回结果集中的单个值 |
T querySingleRow(String sql, RowMapper<T> rowMapper, Object... params) |
查询数据库,转换结果集中的单行数据 |
T querySingleRow(String sql, Class<T> type, Object... params) |
查询数据库,将结果集中的单行数据转换成JavaBean |
结果集转换器用于对查询结果进行转换,用户可实现自己的结果集转换器,也可使用预定义的结果集转换器,下面是所有预定义的结果集转换器:
结果集转换器 | 说明 |
---|---|
ListRecordMapper<T> |
将整个结果集转换成列表 |
SingleRowRecordMapper<T> |
从结果集中提取单行数据 |
如果要自定义结果集转换器,则需要实现RecordMapper<T>
接口:
public interface RecordMapper<T>
{
T map(Record record);
}
map
方法的Record
参数封装了JDBC中的ResultSet
,其方法说明如下:
方法 | 说明 |
---|---|
Row getCurrentRow() |
获取当前行 |
boolean next() |
移动到下一行 |
更多细节见下面的使用示例。
行转换器用于对结果集中的一行进行转换,用户可实现自己的行转换器,也可使用预定义的行转换器,下面是所有预定义的行转换器:
行转换器 | 说明 |
---|---|
BeanRowMapper<T> |
将一行数据转换成JavaBean |
MapRowMapper |
将一行数据转换成Map
|
SingleColumnRowMapper<T> |
提取行中的单独一列 |
如果要自定义行转换器,则需要实现RowMapper<T>
接口:
public interface RowMapper<T>
{
T map(Row row);
}
map
方法的Row
参数封装了结果集中的一行数据,其部分方法说明如下:
方法 | 说明 |
---|---|
Object getObject(String columnLabel) |
根据列名获取列值 |
Object getObject(int columnIndex) |
根据列索引号获取列值(从1开始) |
int getColumnCount() |
获取列数 |
String getColumnLabel(int index) |
根据列索引获取列标签(列名) |
更多细节见下面的使用示例。
下面是JdbcUtils
中用于更新操作的方法:
方法 | 说明 |
---|---|
int update(String sql, Object... params) |
更新数据库,返回影响行数 |
// 方法1:使用预定义的RecordMapper和RowMapper
List<User> users = JdbcTemplate.query("SELECT * FROM users",
new ListResultSetMapper<>(new BeanRowMapper<>(User.class)));
// 方法2:使用自定义RecordMapper
List<User> users = JdbcUtils.query("SELECT * FROM users", record ->
{
List<User> us = new ArrayList<>();
while (record.next())
{
Row row = record.getCurrentRow();
User u = new User();
u.setId(row.getInt("id"));
u.setUsername(row.getString("username"));
u.setPassword(row.getString("password"));
us.add(u);
}
return us;
});
// 方法3:使用自定义RowMapper
List<User> users = JdbcUtils.queryList("SELECT * FROM users", row ->
{
User u = new User();
u.setId(row.getInt("id"));
u.setUsername(row.getString("username"));
u.setPassword(row.getString("password"));
return u;
});
List<User> users = JdbcTemplate.query("SELECT * FROM users WHERE id > ?",
new ListResultSetMapper<>(new BeanRowMapper<>(User.class)),
5);
// 方法1
User user = JdbcUtils.querySingleRow("SELECT * FROM users WHERE id = 1001",
new BeanRowMapper<>(User.class));
// 方法2
User user = JdbcUtils.querySingleRow("SELECT * FROM users WHERE id = 1001",
User.class);
Integer count = JdbcUtils.querySingleValue("SELECT COUNT(*) FROM users",
Integer.class);
int count = JdbcUtils.update("INSERT INTO users(username, password) VALUES(?, ?)",
"byx", "123456");
int count = JdbcUtils.update("DELETE FROM users WHERE username = ? AND password = ?",
"byx", "123456");
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。