0 0

使用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个答案 按时间排序 按投票排序

0 0

同上问!

不过我猜应该是下面的代码有问题

引用

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
0 0

没有问题描述 不知道做啥。

2012年1月10日 19:02
0 0

问题的描述呢?

2012年1月10日 18:40

相关推荐

    Java 使用JdbcTemplate 中的queryForList发生错误解决办法

    在使用 JdbcTemplate 的 queryForList 方法时,可能会遇到错误,例如查询时使用 JdbcTemplate 中的 queryForList 发生错误,如下: ```java jdbcTemplate.queryForList(selectSql.toString(), entityClass) ``` 查询...

    使用jdbcTemplate查询返回自定义对象集合代码示例

    首先,我们可以使用JdbcTemplate的queryForList()方法来查询数据库,并将查询结果转换为自定义对象集合。下面是一个示例代码: ```java public List&lt;UserInfo&gt; findAll() { String sql = "SELECT * FROM user_info...

    spring自带的jdbcTemplate查询、插入预编译使用

    在使用`jdbcTemplate`进行预编译查询时,我们通常会使用`query()`或`queryForList()`方法。例如: ```java String sql = "SELECT * FROM table WHERE id = ?"; Object[] params = {1}; List&lt;MyObject&gt; result = ...

    使用Spring的JdbcTemplate实现分页功能

    使用Spring的JdbcTemplate实现分页功能

    spring mvc注解jdbctemplate

    然后,我们定义了一个处理GET请求的方法`queryData()`,其中使用了JdbcTemplate的`queryForList()`方法执行SQL查询并返回结果。 JdbcTemplate提供了一系列的便捷方法,如`update()`, `queryForObject()`, `...

    JdbcTemplate使用.doc

    `JdbcTemplate`提供了大量预定义的方法,如`update()`, `query()`, `queryForObject()`, `queryForList()`等,可以根据不同的SQL查询类型选择合适的方法。它还支持参数绑定,可以防止SQL注入攻击,例如使用`?`作为...

    简单介绍如何使用Spring Boot使用JdbcTemplate与MySQL进行数据库操作

    在本文中,我们将深入探讨如何使用Spring Boot集成JdbcTemplate与MySQL数据库进行数据操作。Spring Boot以其简化配置和快速启动的特点,已经成为Java开发者的首选框架。而JdbcTemplate是Spring框架的一部分,它提供...

    jdbcTemplate分页彻底解决,使用游标滚动

    本篇文章将深入探讨如何利用JdbcTemplate结合游标滚动来解决分页问题。 首先,我们要理解什么是游标滚动。在数据库中,游标允许我们从结果集中顺序地读取一行数据,也可以向前或向后移动,甚至可以在当前行上进行...

    jdbcTemplate简单使用

    本篇文章将深入探讨`JdbcTemplate`的使用方法、主要功能以及在实际开发中的应用。 首先,`JdbcTemplate`通过预编译的SQL语句和参数绑定,降低了SQL注入的风险。它支持多种类型的数据库操作,包括查询、更新、插入和...

    spring的jdbcTemplate小案例

    通过使用它,我们可以避免手动管理数据库连接,减少潜在的资源泄露问题,同时增强代码的可读性和可维护性。通过结合DataSource的配置、方法调用以及事务管理,我们可以构建出高效且稳定的数据库操作逻辑。在实际项目...

    9. 使用JdbcTemplate【从零开始学Spring Boot】

    在本节中,我们将深入探讨如何在Spring Boot项目中使用JdbcTemplate进行数据库操作。JdbcTemplate是Spring框架提供的一种简化数据库访问的工具,它通过提供一套模板方法,使得开发者可以更安全、更方便地执行SQL语句...

    JdbcTemplate基本使用

    JdbcTemplate是Spring框架中用于简化JDBC操作的工具类,它提供了一种更安全、更易用的方式来执行数据库操作,避免了手动管理数据库资源和处理潜在的资源泄露问题。通过JdbcTemplate,开发者可以专注于SQL语句的编写...

    JdbcTemplate查询

    相较于传统的JDBC编程方式,使用`JdbcTemplate`可以极大地减少样板代码的编写,并能更好地处理异常、事务以及资源管理等问题。 #### 二、JdbcTemplate简介 `JdbcTemplate`作为Spring JDBC的核心类,主要负责执行...

    Spring框架中jdbcTemplate 的使用.doc

    以下是对JdbcTemplate使用的一些详细说明: 1. **创建表和执行SQL语句**: JdbcTemplate的`execute()`方法可以用来执行任意的SQL语句,包括DDL(数据定义语言)如创建表。在示例中,`execute()`方法被用来创建名为...

    jdbcTemplate

    1. **参数绑定**:`JdbcTemplate`支持预编译的SQL语句,可以安全地处理SQL注入问题。它能将Java对象的值绑定到SQL查询中的占位符,例如`?`或`:${param}`。 2. **事务管理**:`JdbcTemplate`提供了自动的事务管理...

    Spring Boot多数据源(JdbcTemplate)配置与使用

    在本教程中,我们将深入探讨如何在Spring Boot项目中配置和使用多数据源以及JdbcTemplate。 首先,让我们了解什么是`JdbcTemplate`。它是Spring提供的一种模板类,用于执行SQL语句,通过回调机制将结果转换为Java...

    Spring的JDBCTemplate

    为了能够在项目中使用`JDBCTemplate`,首先需要在Spring的配置文件`ApplicationContext`中定义一个`jdbcTemplate` bean,例如: ```xml &lt;bean id="jdbcTemplate" class="org.springframework.jdbc.core....

    jdbcTemplate相关jar包.zip

    4. 调用JdbcTemplate的方法:例如queryForList()用于查询多条记录,update()用于执行更新操作。 5. 处理结果:JdbcTemplate会自动处理结果集,将数据转换为Java对象。 JdbcTemplate提供的主要API包括: - `query...

Global site tag (gtag.js) - Google Analytics