当前位置: 首页 > 知识库问答 >
问题:

MyBatis无法在查询上设置参数

祁晟
2023-03-14

Mybatis抛出一个错误,该错误表示设置参数有问题。会出什么问题?我测试了SQL查询,它很好。我在用graddle和Spring。

import com.luminor.dc.ccc.contracts.dao.Customer;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface CustomerService {


    @Select("Select * FROM customer WHERE cust_personal_code= #{personalCode} AND cust_bank_country = #{country}")
    List<Customer> findByPersonalCodeAndCountry(@Param("personalCode") String personalCode,@Param("country") String country);
}

控制器

@RestController
@RequestMapping(value = "/v1/customers", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class CustomerController {

   private CustomerService customerService;

    public CustomerController(@Autowired CustomerService customerService) {
        this.customerService = customerService;
    }

    @GetMapping("/{personalCode}")
    public List<Customer> getCustomersByPersonalCode(@PathVariable String personalCode, @RequestHeader String country) {
        return customerService.findByPersonalCodeAndCountry(personalCode, country);
    }
}

共有1个答案

江智
2023-03-14

你能试试下面的代码吗?

Controller method :
     @GetMapping("/{personalCode}")
        public List<Customer> getCustomersByPersonalCode(@PathVariable String personalCode, @RequestHeader(value="country") String country) {
            return customerService.findByPersonalCodeAndCountry(personalCode, country);
        }

@Results(value = { @Result(column = "id", property = "id"), 
        @Result(column = "cust_personal_code", property = "personalCode"), 
        @Result(column = "cust_bank_country ", property = "country")
    )}
    @Select("Select * FROM customer WHERE cust_personal_code= #{personalCode} AND cust_bank_country = #{country}")
    List<Customer> findByPersonalCodeAndCountry(@Param("personalCode") String personalCode, @Param("country") String country);

其中id、personalCode、country:customer POJO表中的变量->id(Integer)、cust_personal_code(String)、cust_bank_country(String):表中的列

 类似资料:
  • 问题内容: 我正在尝试在bigquery的查询中使用命名参数。 我懂了 有什么办法可以在biquery上设置命名参数? 问题答案: BigQuery仅通过使用标准SQL的API而非Web UI支持命名参数。您可以在“运行参数化查询”部分中了解有关它们的信息。如果您对查询参数的Web UI支持感兴趣,可以在问题跟踪器上为功能请求加注星标。

  • 本文向大家介绍MyBatis带参查询的方法详解,包括了MyBatis带参查询的方法详解的使用技巧和注意事项,需要的朋友参考一下 #{}占位符 类似于jdbc中通过PreparedStatement进行操作的方式, 会将sql语句中需要参数的位置使用?进行占位,后续由传进来的参数进行参数的绑定。?处绑定的都是值,不能指定表的列,转换成sql时表名会被当成字符串,会出错,防止sql注入。 简单类型参数

  • 问题内容: 我正在尝试使用mybatis运行一个简单的sql查询,但是它给了我以下异常 我的UserMapper.xml是 我的UserMapper是 我试图在我的LoginController中访问它 我的spring-servlet.xml文件是 我不知道为什么会出现此错误。 问题答案: 看看错误 看来myBatis找不到您的查询。那可能是因为找不到您的xml映射。它应该符合您的配置: 在项目

  • 问题内容: 这是我的代码部分: 有时可以为null(Date类对象)。如果为null,则会引发以下异常: 如何使此代码正常工作并将null值持久保存到数据库中? 问题答案: 您正在使用postgresql(已经在堆栈中进行了说明),并且可能正在使用Hibernate,几乎可以肯定会遇到此问题:PostgreSQL JDBCNull String作为bytea 因此,这意味着转义到Hibernate

  • 我正在努力将jdbcType设置为传递给Ibatis查询的参数。我的后端表有定义为varchar的字段,mybatis框架似乎正在将我在Mapper.java中传递的字符串参数转换为nvarchar。因此,查询优化器需要时间来验证执行计划,执行隐式类型转换,从而导致一些意外的延迟。对解决这个问题有什么建议吗?

  • 我想使搜索页面后,我点击它的按钮将被重定向到另一个页面。这一页将是这样的 还有我的路由器看起来像这样 问题是如何在Vue中获取目标页面中的查询值。JS3?这个答案仍然让我困惑,因为没有使用CompositionAPI,也没有在VueJS3中使用