Spring jdbc实例
来源:互联网 发布:python coroutine 编辑:程序博客网 时间:2024/06/09 21:44
Spring jdbc实例
Storage:
import com.xykj.koala.commons.db.DbClient;import com.xykj.koala.commons.db.DbUtils;import com.xykj.koala.users.common.data.UserSignIn;import com.xykj.koala.users.server.storage.UserSignInStorage;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import org.springframework.util.CollectionUtils;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;@Repositorypublic class DBUserSignInStorage implements UserSignInStorage { @Autowired DbClient dbClient; @Override public void create(long userId, long lastSignTime) { String sql = "insert into user_sign_in (userId, lastSignInTime, serialCount, totalCount)" + "values(?,?,?,?)"; dbClient.update(sql, userId, lastSignTime, 1, 1); } @Override public UserSignIn findByUserId(long userId) { String sql = "select * from user_sign_in where userId = ?"; return dbClient.queryForObject(sql, UserSignIn.rowMapper, userId); } @Override public void updateSignIn(UserSignIn userSignIn, UserSignIn.Field... updateFields) { List<UserSignIn.Field> fields = Arrays.asList(updateFields); if (CollectionUtils.isEmpty(fields)) { return; } String sql = "update `user_sign_in` set " + DbUtils.getValueList(fields.stream() .map(UserSignIn.Field::getUpdateSql) .collect(Collectors.toList())) + " where userId=?"; List<Object> args = fields.stream() .map(field -> field.getValue().apply(userSignIn)) .collect(Collectors.toList()); args.add(userSignIn.getUserId()); dbClient.update(sql, args.toArray()); }}data:
import lombok.Getter;import lombok.Setter;import lombok.experimental.Accessors;import org.springframework.jdbc.core.RowMapper;import java.util.function.Function;@Getter@Setter@Accessors(chain = true)public class UserSignIn { private long userId; private long lastSignInTime; private long serialCount; private long totalCount; public static final RowMapper<UserSignIn> rowMapper = (rs, rc) -> new UserSignIn() .setUserId(rs.getLong("userId")) .setLastSignInTime(rs.getLong("lastSignInTime")) .setSerialCount(rs.getLong("serialCount")) .setTotalCount(rs.getLong("totalCount")); public enum Field { lastSignInTime("lastSignInTime=?", UserSignIn::getLastSignInTime), serialCount("serialCount=?", UserSignIn::getSerialCount), totalCount("totalCount=?", UserSignIn::getTotalCount); private String updateSql; private Function<UserSignIn, Object> value; Field(String updateSql, Function<UserSignIn, Object> value) { this.updateSql = updateSql; this.value = value; } public String getUpdateSql() { return updateSql; } public Function<UserSignIn, Object> getValue() { return value; } }}
RowMapper的写法使用Lamda表达式,原始写法如下:
new RowMapper<User>() {
@Overridepublic User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
return user;
}
}
等效于下面lamda写法:
public static final RowMapper<User> rowMapper = (rs, rc) -> new User()
.setId(rs.getInt("id"))
.setUsername(rs.getString("username"))
.setPassword(rs.getString("password"));
阅读全文
0 0
- Spring+JDBC 数据库实例
- Spring jdbc实例
- SPring Itegration--JDBC endpoint 简单实现实例
- spring JDBC的支持使用实例源码
- Spring JDBC原理与应用实例讲解
- Spring中jdbc Template的用法实例
- 使用spring jdbc template简化jdbc数据库操作实例代码
- Spring中使用MappingSQLQuery封装JDBC结果集实例
- Spring JDBC编程式事务+详细实例总结
- Spring JDBC 新增记录返回自增主键(实例)
- springmvc+spring jdbc+velocity入门教程及其代码实例
- jdbc实例
- JDBC实例
- Spring JDBC
- spring+JDBC
- Spring JDBC
- spring + jdbc
- Spring JDBC
- Windows 平台安装 MongoDB与遇到的问题
- Python小项目四:实现简单的web服务器
- 13. modem调试日志
- centos7下gitlab的配置(nginx冲突、端口更改)
- CSS小技巧
- Spring jdbc实例
- 通过Prompt实现JSBridge
- Java程序员必备的8个开发工具
- Mac 设置环境变量,并根据shell修改而修改变量的位置
- Spring的@PropertySource和@Value注解例子
- ViewCacheManager
- 双击点击退出页面工具
- 我们想把ixgbe-5.1.3和ixgbevf-4.1.2都编译进我们的内核
- Entity Framework Code First执行SQL语句、视图及存储过程