select语句中的Mybatis动态列
Mybatis dynamic column in select statement
我正在尝试 select 动态列。以下是我的代码:
//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>
这是我得到的结果:
[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,空,空,空,空,空]
我做错了什么?
它不能因为你的参数是 map 所以你可以这样改变然后试试
//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>
您也可以使用官方文档中的 SQL 部分:
http://www.mybatis.org/mybatis-3/sqlmap-xml.html
节SQL
我正在尝试 select 动态列。以下是我的代码:
//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>
这是我得到的结果:
[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,空,空,空,空,空]
我做错了什么?
它不能因为你的参数是 map 所以你可以这样改变然后试试
//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>
您也可以使用官方文档中的 SQL 部分:
http://www.mybatis.org/mybatis-3/sqlmap-xml.html
节SQL