java - select语句中的mybatis动态列
问题描述
我正在尝试选择动态列。以下是我的代码:
//call the dao method
String columns = "first_name";
userDao.sample(1, columns);
//call mapper
List<User> sample(@Param("userId") int userId, @Param("columns") String columns);
//mapper
<select id="sample" resultMap="user" parameterType="map">
SELECT
#{columns}
FROM
user
WHERE
userId = #{userId}
</select>
这是我得到的结果:
[空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空]
我究竟做错了什么?
解决方案
它不能因为你的参数是地图所以你可以像这样改变并尝试
//call the dao method
String columns = "first_name";
HashMap map = new HashMap();
map.put("userId",userId);
map.put("columns",columns);
userDao.sample(map);
//call mapper
List<User> sample(HashMap map);
//mapper
<select id="sample" resultMap="user" parameterType="map">
SELECT
#{columns}
FROM
user
WHERE
userId = #{userId}
</select>
推荐阅读
- bash - BASH - 通过文件中的每一行使用 IF 循环(for)
- javascript - 如何使用 html 和 js 在 foreach 循环中为单个按钮创建动态 ID
- c# - 如何在 linq 的动态列表中查找重复项?
- android - 如何在 Android 的 SQLite 数据库的第二个表中插入第一个表 ID?
- google-bigquery - 外部表定义中的 skipLeadingRows=1
- ios - 订阅到期时,Apple 订阅回调不会通知我们(沙盒)
- odbc - Power BI - 如何将 DirectQuery 与 Presto ODBC 结合使用
- ios - 如何解决找不到“glog/logging.h”文件
- authentication - 有没有办法在不使用其 UI 的情况下使用 KeyCloak 身份验证?
- office-js - Word Online 加载项以静默方式无法插入 ContentControl