返回信息流用java写个服务器,客户端是android的app,服务器需要根据客户端提供的关键字在数据库里面进行检索,因为有不同类型的关键字,所以检索方法有很多,我的想法是用JDBC来执行SQL,但是这样SQL语句写起来就比较麻烦,请问有没有其他的更好的方法?
这是一条镜像帖。来源:北邮人论坛 / java / #29051同步于 2014/3/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]java服务器
Lordshang
2014/3/28镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
【 在 nuanyangyang 的大作中提到: 】
: spring jdbc,稍微提供一些语法糖。
: 或者换个语言(比如scala、groovy等跑在JVM上的语言),更优美一些。
nuanyangyang大神可以详细点讲讲spring jdbc的情况么
比如你以前这样写:
class Actor {
... // 自己的某个类。
}
Actor actor = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = dataSource.getConnection();
ps = conn.prepareStatement("select first_name, last_name from t_actor where id = ?");
ps.setLong(1, 1212L);
rs = ps.executeQuery();
while (rs.next()) {
actor = new Actor();
actor.setFirstName(rs.getString("first_name"));
actor.setLastName(rs.getString("last_name"));
}
} finally { // 保证把该关掉的都关掉
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
// 开始使用actor
doSomethingWith(actor);
现在这样写:
Actor actor = this.jdbcTemplate.queryForObject( // jdbcTemplate帮你做烦人的工作,你不用管怎么建立的连接
"select first_name, last_name from t_actor where id = ?", // 你不用管如何准备语句
new Object[]{1212L}, // 你不用一个问号一个问号地设置
new RowMapper<Actor>() { // 你不用管用while语句迭代ResultSet
public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {
Actor actor = new Actor(); // 只管做好自己的事就行了
actor.setFirstName(rs.getString("first_name"));
actor.setLastName(rs.getString("last_name"));
return actor;
}
});
// 该关掉的都自动关掉了
doSomethingWith(actor); // 做你自己的事。
详情请见:
http://docs.spring.io/spring/docs/4.0.3.RELEASE/spring-framework-reference/html/jdbc.html
【 在 Lordshang 的大作中提到: 】
: nuanyangyang大神可以详细点讲讲spring jdbc的情况么
【 在 nuanyangyang 的大作中提到: 】
: 比如你以前这样写:
: [code=java]
: class Actor {
: ...................
谢啦,膜拜