当我尝试使用MyBatis执行简单查询时,这是堆栈跟踪:
{s1, s2, s3} -> $s1@$s2@$s3
这是我班上的一个方法:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ppcredit.gypsophila.mapper.GypsophilaVarsStatisticsMapper.selectBySql
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:225)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
at com.sun.proxy.$Proxy110.selectBySql(Unknown Source)
在这种情况下,需要直接执行SQL语句,sql如下:
/**
* use the sql to query result
*
* @param sql
* @return
*/
List<LinkedHashMap<String, Object>> selectBySql(String sql, Map<String, Object> parms);
可以在SELECT VELOCITY_VARS FROM PPC_GYPSOPHILA_VARS_STATISTICS WHERE SCENARIO_ID=#{scenarioId} and TACTIC_ID=#{flowId} and CREATE_USER=#{userId}
我做了一些研究,但没有一个解决方案对我有用。我的Mapper类似乎有一些问题,但我不知道什么是错的。 有没有人知道这里有什么问题? 提前致谢
答案 0 :(得分:0)
我将假设公共接口GypsophilaVarsStatisticsMapper以正确的方式实现了selectBySQL。如果您使用它,我认为您是导入注释:
import com.ppcredit.gypsophila.mapper.entity.GypsophilaVarsStatistics;
import org.apache.ibatis.annotations.*;
public interface GypsophilaVarsStatisticsMapper {
List<GypsophilaVarsStatistics> selectBySQL(String sql,Map parameters);
/**your code**/
我同样会想,你有一个类(我们称之为测试),其范围允许调用GypsophilaVarsStatisticsMapper接口(在其他情况下是导入)。我要做的就是文件:
import com.ppcredit.gypsophila.mapper.entity.GypsophilaVarsStatistics;
public class Test {
public static void main(String args[]) throws IOException{
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
session.getConfiguration().addMapper(GypsophilaVarsStatisticsMapper.class);
GypsophilaVarsStatisticsMapper mapper = session.getMapper(GypsophilaVarsStatisticsMapper.class);
sql_string = 'SELECT VELOCITY_VARS FROM PPC_GYPSOPHILA_VARS_STATISTICS WHERE SCENARIO_ID=#{scenarioId} and TACTIC_ID=#{flowId} and CREATE_USER=#{userId}'
Map<String,Object) params = getParams() /* Your params */
List<GypsophilaVarsStatistics> result = mapper.selectBySQL(sql_string, params)
我想你没有使用像Spring这样的依赖注入框架MyBatis。在这种情况下,SqlSessionFactory由此框架提供。