-
使用JdbcTemplate的queryForList遇到的诡异问题10
近日遇到一个诡异问题,先上点代码:public AdGroup getPromotionAdGroup(Integer promotionCampaignId,Integer channelAccountId,Integer channelId,Integer accountId) { AdGroup adGroup = new AdGroup(); ChannelAccount channelAccount=new ChannelAccount(); channelAccount.setChannelAccountId(channelAccountId); /** * If there is no adGroup under the promotion campaign which size is less than the * MAX_ADGOURP_KEYWORD_NUM,then create a new adGroup */ String sql="select t1.AD_GROUP_ID as AD_GROUP_ID,t1.NAME as NAME from"+"\n" +"AD_GROUP t1"+"\n" +"left join AD_KEYWORD t2 on t1.AD_GROUP_ID=t2.AD_GROUP_ID"+"\n" +"where t1.AD_CAMPAIGN_ID="+promotionCampaignId+"\n" +"and t1.status="+Constants.STATUS_ACTIVE+"\n" //+"and t1.action_flag="+Constants.ACTION_FLAG_NORMAL+"\n" +"group by t1.AD_GROUP_ID"+"\n" +"having count(t2.AD_KEYWORDS_ID)<"+Constants.MAX_ADGOURP_KEYWORD_NUM+"\n"; List adGroupList=jdbcTemplate.queryForList(sql); if(adGroupList!=null && !adGroupList.isEmpty()) { Map adGroupMap=(Map)adGroupList.get(0); adGroup.setAdGroupId((Integer)adGroupMap.get("AD_GROUP_ID")); } else { adGroup.setAdCampaignId(promotionCampaignId); adGroup.setActionFlag(Constants.ACTION_FLAG_NEW); adGroup.setStatus(Constants.STATUS_ACTIVE); adGroup.setActionReason(Constants.RULE_OPERATION); adGroup.setName("促销活动投放"+new Date()); adGroup.setChannelAccountId(channelAccountId); adGroup.setChannelId(channelId); adGroup.setDefaultPrice(String.valueOf(Constants.PROMOTION_BID_LIMIT)); adGroup.setCreateTime(new Date()); adGroup.setUpdateTime(null); adGroup.setAccountId(accountId); try { adGroupService.save(adGroup); } catch (Exception e) { adGroup=null; e.printStackTrace(); } } return adGroup; }
2012年1月10日 18:03
3个答案 按时间排序 按投票排序
-
同上问!
不过我猜应该是下面的代码有问题引用
String sql="select t1.AD_GROUP_ID as AD_GROUP_ID,t1.NAME as NAME from"+"\n"
+"AD_GROUP t1"+"\n"
+"left join AD_KEYWORD t2 on t1.AD_GROUP_ID=t2.AD_GROUP_ID"+"\n"
+"where t1.AD_CAMPAIGN_ID="+promotionCampaignId+"\n"
+"and t1.status="+Constants.STATUS_ACTIVE+"\n"
//+"and t1.action_flag="+Constants.ACTION_FLAG_NORMAL+"\n"
+"group by t1.AD_GROUP_ID"+"\n"
+"having count(t2.AD_KEYWORDS_ID)<"+Constants.MAX_ADGOURP_KEYWORD_NUM+"\n";
SQL字符串中加\n换行,执行时有问题吧!2012年1月10日 19:36
相关推荐
在使用 JdbcTemplate 的 queryForList 方法时,可能会遇到错误,例如查询时使用 JdbcTemplate 中的 queryForList 发生错误,如下: ```java jdbcTemplate.queryForList(selectSql.toString(), entityClass) ``` 查询...
首先,我们可以使用JdbcTemplate的queryForList()方法来查询数据库,并将查询结果转换为自定义对象集合。下面是一个示例代码: ```java public List<UserInfo> findAll() { String sql = "SELECT * FROM user_info...
在使用`jdbcTemplate`进行预编译查询时,我们通常会使用`query()`或`queryForList()`方法。例如: ```java String sql = "SELECT * FROM table WHERE id = ?"; Object[] params = {1}; List<MyObject> result = ...
使用Spring的JdbcTemplate实现分页功能
然后,我们定义了一个处理GET请求的方法`queryData()`,其中使用了JdbcTemplate的`queryForList()`方法执行SQL查询并返回结果。 JdbcTemplate提供了一系列的便捷方法,如`update()`, `queryForObject()`, `...
`JdbcTemplate`提供了大量预定义的方法,如`update()`, `query()`, `queryForObject()`, `queryForList()`等,可以根据不同的SQL查询类型选择合适的方法。它还支持参数绑定,可以防止SQL注入攻击,例如使用`?`作为...
在本文中,我们将深入探讨如何使用Spring Boot集成JdbcTemplate与MySQL数据库进行数据操作。Spring Boot以其简化配置和快速启动的特点,已经成为Java开发者的首选框架。而JdbcTemplate是Spring框架的一部分,它提供...
本篇文章将深入探讨如何利用JdbcTemplate结合游标滚动来解决分页问题。 首先,我们要理解什么是游标滚动。在数据库中,游标允许我们从结果集中顺序地读取一行数据,也可以向前或向后移动,甚至可以在当前行上进行...
本篇文章将深入探讨`JdbcTemplate`的使用方法、主要功能以及在实际开发中的应用。 首先,`JdbcTemplate`通过预编译的SQL语句和参数绑定,降低了SQL注入的风险。它支持多种类型的数据库操作,包括查询、更新、插入和...
通过使用它,我们可以避免手动管理数据库连接,减少潜在的资源泄露问题,同时增强代码的可读性和可维护性。通过结合DataSource的配置、方法调用以及事务管理,我们可以构建出高效且稳定的数据库操作逻辑。在实际项目...
在本节中,我们将深入探讨如何在Spring Boot项目中使用JdbcTemplate进行数据库操作。JdbcTemplate是Spring框架提供的一种简化数据库访问的工具,它通过提供一套模板方法,使得开发者可以更安全、更方便地执行SQL语句...
JdbcTemplate是Spring框架中用于简化JDBC操作的工具类,它提供了一种更安全、更易用的方式来执行数据库操作,避免了手动管理数据库资源和处理潜在的资源泄露问题。通过JdbcTemplate,开发者可以专注于SQL语句的编写...
相较于传统的JDBC编程方式,使用`JdbcTemplate`可以极大地减少样板代码的编写,并能更好地处理异常、事务以及资源管理等问题。 #### 二、JdbcTemplate简介 `JdbcTemplate`作为Spring JDBC的核心类,主要负责执行...
以下是对JdbcTemplate使用的一些详细说明: 1. **创建表和执行SQL语句**: JdbcTemplate的`execute()`方法可以用来执行任意的SQL语句,包括DDL(数据定义语言)如创建表。在示例中,`execute()`方法被用来创建名为...
1. **参数绑定**:`JdbcTemplate`支持预编译的SQL语句,可以安全地处理SQL注入问题。它能将Java对象的值绑定到SQL查询中的占位符,例如`?`或`:${param}`。 2. **事务管理**:`JdbcTemplate`提供了自动的事务管理...
在本教程中,我们将深入探讨如何在Spring Boot项目中配置和使用多数据源以及JdbcTemplate。 首先,让我们了解什么是`JdbcTemplate`。它是Spring提供的一种模板类,用于执行SQL语句,通过回调机制将结果转换为Java...
为了能够在项目中使用`JDBCTemplate`,首先需要在Spring的配置文件`ApplicationContext`中定义一个`jdbcTemplate` bean,例如: ```xml <bean id="jdbcTemplate" class="org.springframework.jdbc.core....
4. 调用JdbcTemplate的方法:例如queryForList()用于查询多条记录,update()用于执行更新操作。 5. 处理结果:JdbcTemplate会自动处理结果集,将数据转换为Java对象。 JdbcTemplate提供的主要API包括: - `query...