2

I'm trying to select dynamic column. Below are my codes:

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

This is the result I'm getting:

[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]

What am I doing wrong?

Chong We Tan
  • 233
  • 5
  • 15

2 Answers2

3

its cannot becauase your parameter is map so you can change like this and try that

//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>
-1

you can also use the SQL section like in the official docs:

http://www.mybatis.org/mybatis-3/sqlmap-xml.html

Section SQL

igreenfield
  • 1,618
  • 19
  • 36