首页
IT
登录
6mi
u
盘
搜
搜 索
IT
JdbcTemplate
JdbcTemplate
xiaoxiao
2021-03-25
12
Java代码
jdbcTemplate.execute(
"CREATE TABLE USER (user_id integer, name varchar(100))"
);
2、如果是UPDATE或INSERT,可以用update()方法。
Java代码
jdbcTemplate.update(
"INSERT INTO USER VALUES('"
+ user.getId() +
"', '"
+ user.getName() +
"', '"
+ user.getSex() +
"', '"
+ user.getAge() +
"')"
);
3、带参数的更新
Java代码
jdbcTemplate.update(
"UPDATE USER SET name = ? WHERE user_id = ?"
,
new
Object[] {name, id});
Java代码
jdbcTemplate.update(
"INSERT INTO USER VALUES(?, ?, ?, ?)"
,
new
Object[] {user.getId(), user.getName(), user.getSex(), user.getAge()});
4、使用JdbcTemplate进行查询时,使用queryForXXX()等方法
Java代码
int
count = jdbcTemplate.queryForInt(
"SELECT COUNT(*) FROM USER"
);
Java代码
String name = (String) jdbcTemplate.queryForObject(
"SELECT name FROM USER WHERE user_id = ?"
,
new
Object[] {id}, java.lang.String.
class
);
Java代码
List rows = jdbcTemplate.queryForList(
"SELECT * FROM USER"
);
Java代码
List rows = jdbcTemplate.queryForList(
"SELECT * FROM USER"
);
Iterator it = rows.iterator();
while
(it.hasNext()) {
Map userMap = (Map) it.next();
System.out.print(userMap.get(
"user_id"
) +
"\t"
);
System.out.print(userMap.get(
"name"
) +
"\t"
);
System.out.print(userMap.get(
"sex"
) +
"\t"
);
System.out.println(userMap.get(
"age"
) +
"\t"
);
}
JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等。spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现。
除了大量使用Template Method来封装一些底层的操作细节,spring也大量使用callback方式类回调相关类别的方法以提供JDBC相关类别的功能,使传统的JDBC的使用者也能清楚了解spring所提供的相关封装类别方法的使用。
JDBC的PreparedStatement
Java代码
final
String id = user.getId();
final
String name = user.getName();
final
String sex = user.getSex() +
""
;
final
int
age = user.getAge();
jdbcTemplate.update(
"INSERT INTO USER VALUES(?, ?, ?, ?)"
,
new
PreparedStatementSetter() {
public
void
setValues(PreparedStatement ps)
throws
SQLException {
ps.setString(
1
, id);
ps.setString(
2
, name);
ps.setString(
3
, sex);
ps.setInt(
4
, age);
}
});
Java代码
final
User user =
new
User();
jdbcTemplate.query(
"SELECT * FROM USER WHERE user_id = ?"
,
new
Object[] {id},
new
RowCallbackHandler() {
public
void
processRow(ResultSet rs)
throws
SQLException {
user.setId(rs.getString(
"user_id"
));
user.setName(rs.getString(
"name"
));
user.setSex(rs.getString(
"sex"
).charAt(
0
));
user.setAge(rs.getInt(
"age"
));
}
});
Java代码
class
UserRowMapper
implements
RowMapper {
public
Object mapRow(ResultSet rs,
int
index)
throws
SQLException {
User user =
new
User();
user.setId(rs.getString(
"user_id"
));
user.setName(rs.getString(
"name"
));
user.setSex(rs.getString(
"sex"
).charAt(
0
));
user.setAge(rs.getInt(
"age"
));
return
user;
}
}
public
List findAllByRowMapperResultReader() {
String sql =
"SELECT * FROM USER"
;
return
jdbcTemplate.query(sql,
new
RowMapperResultReader(
new
UserRowMapper()));
}
在getUser(id)里面使用UserRowMapper
Java代码
public
User getUser(
final
String id)
throws
DataAccessException {
String sql =
"SELECT * FROM USER WHERE user_id=?"
;
final
Object[] params =
new
Object[] { id };
List list = jdbcTemplate.query(sql, params,
new
RowMapperResultReader(
new
UserRowMapper()));
return
(User) list.get(
0
);
}
网上收集
org.springframework.jdbc.core.PreparedStatementCreator 返回预编译SQL 不能于Object[]一起用
Java代码
public
PreparedStatement createPreparedStatement(Connection con)
throws
SQLException {
return
con.prepareStatement(sql);
}
1.增删改
org.springframework.jdbc.core.JdbcTemplate 类(必须指定数据源dataSource)
Java代码
template.update(
"insert into web_person values(?,?,?)"
,Object[]);
或
Java代码
template.update(
"insert into web_person values(?,?,?)"
,
new
PreparedStatementSetter(){ 匿名内部类 只能访问外部最终局部变量
public
void
setValues(PreparedStatement ps)
throws
SQLException {
ps.setInt(index++,
3
);
});
org.springframework.jdbc.core.PreparedStatementSetter 接口 处理预编译SQL
Java代码
public
void
setValues(PreparedStatement ps)
throws
SQLException {
ps.setInt(index++,
3
);
}
2.查询JdbcTemplate.query(String,[Object[]/PreparedStatementSetter],RowMapper/RowCallbackHandler)
org.springframework.jdbc.core.RowMapper 记录映射接口 处理结果集
Java代码
public
Object mapRow(ResultSet rs,
int
arg1)
throws
SQLException {
int
表当前行数
person.setId(rs.getInt(
"id"
));
}
List template.query(
"select * from web_person where id=?"
,Object[],RowMapper);
org.springframework.jdbc.core.RowCallbackHandler 记录回调管理器接口 处理结果集
Java代码
template.query(
"select * from web_person where id=?"
,Object[],
new
RowCallbackHandler(){
public
void
processRow(ResultSet rs)
throws
SQLException {
person.setId(rs.getInt(
"id"
));
});
转载请注明原文地址: https://ju.6miu.com/read-300386.html
技术
最新回复
(
0
)