小编nwG*_*ham的帖子

如何使用java lambda表达式实现RowMapper

我有一个工作的RowMapper代码,它将数据库表行映射到java对象.我想用lambda表达式来改变实现.但是,我总是得到错误; 代码段如下;

String queryString = "select * from person where person_id = ? ";
RowMapper rowMapper = (rs, rowNum) -> {

Person p = new Person();

p.setName(rs.getString("personName"));
p.setAddress(rs.getString("address"));
p.setAge(rs.getInt("age"));
}

Person person = getJdbcTemplate().query(queryString, personId, rowMapper);

return person;
Run Code Online (Sandbox Code Playgroud)

有人可以帮我正确实现代码吗?有想法得到人名单吗?

java lambda spring jdbctemplate

11
推荐指数
2
解决办法
2万
查看次数

为什么SQL语句在SQL条件中用于列类型为varchar时失败,并且在将数字类型列添加为条件时运行时没有任何错误

我有一个SQL服务器表列,其定义varchar为此列中存储的数据1,2,3.我运行了以下查询,但失败了(我很清楚原因):

select * from <table> where <column1> in (1,2,3)
Run Code Online (Sandbox Code Playgroud)

但是,我在同一个表中有另一列定义为numeric.如果我使用numeric列添加另一个条件到上面的查询,它的工作原理:

select * from <table> where <column1> in (1,2,3) and <column2> = 20
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下SQL Server的行为是什么原因吗?

此外,我有更大的查询,其中包含定义为第一个查询的条件在同一数据库服务器上的某些数据库上工作,而同一服务器上的其他数据库失败(抱歉,我不能在此处粘贴查询).

我跑上面查询SQL Server 2008 R2服务器.

以下是我收到的错误消息;

将varchar值'36O5A'转换为数据类型int时转换失败.

其中'36O5A'是varchar列中一系列"数字字符"值之后的第一个字母数字值.

t-sql sql-server sql-server-2008

2
推荐指数
1
解决办法
481
查看次数

当WITH (NOLOCK) 使用内部游标时,存储过程挂起

我在 SQL Server 2008 R2 中有一个存储过程,如下所示;

DECLARE @uniqueId BIGINT

DECLARE TestCursor CURSOR FOR 
    SELECT em.uniqueId 
    FROM EMPLYEE_MASTER em WITH (NOLOCK)
    INNER JOIN EMP_DETAILS edt WITH (NOLOCK) ON em.uniqueId = edt.uniqueId
    INNER JOIN EMP_ATTENDANCE ea WITH (NOLOCK) ON em.uniqueId = ea.uniqueId

OPEN TestCursor

FETCH NEXT FROM TestCursor INTO @uniqueId

WHILE @@fetch_status = 0
BEGIN
    BEGIN TRANSACTION  purge        

    DELETE FROM EMPLYEE_MASTER where uniqueId = @uniqueId
    DELETE FROM EMP_DETAILS where uniqueId = @uniqueId
    DELETE FROM EMP_ATTENDANCE where uniqueId = @uniqueId

    DELETE FROM EMP_ADDRESS …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures sql-server-2008

2
推荐指数
1
解决办法
3964
查看次数