【转自】https://blog.youkuaiyun.com/xingqibaing/article/details/95632363
(一)通过配置文件的方式实现
1、dao.java
public List<Map<String, Object>> selectPublicItemList(@Param(value="sqlStr") String sqlStr);
2、mapper.xml
-
<select id="selectPublicItemList" parameterType="String" resultType="java.util.Map">
-
${sqlStr}
-
</select>
3、测试类
-
package com.yukong.chapter5.repository;
-
import org.junit.Test;
-
import org.junit.runner.RunWith;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.boot.test.context.SpringBootTest;
-
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
import java.util.List;
-
import java.util.Map;
-
@SpringBootTest
-
@RunWith(SpringJUnit4ClassRunner.class)
-
public class UserMapperTest {
-
@Autowired
-
private PublicMapper publicMapper;
-
@Test
-
public void getPublicData(){
-
String sql = "select id,age,password,sex,username from user where id = 1";
-
List<Map<String, Object>> list = publicMapper.selectPublicItemList(sql);
-
}
-
}
(二)通过注解的方式实现
1、dao.java
-
import org.apache.ibatis.annotations.Mapper;
-
import org.apache.ibatis.annotations.Param;
-
import org.apache.ibatis.annotations.Select;
-
import java.util.LinkedHashMap;
-
import java.util.List;
-
/**
-
* @description:
-
* @author: zhengkeyang
-
* @date: 2019/7/12
-
*/
-
@Mapper
-
public interface PublicMapper {
-
@Select("${sqlStr}")
-
List<LinkedHashMap<String,Object>> getPublicItems(@Param(value = "sqlStr") String sqlStr);
-
}
2、测试类
-
@Autowired
-
private PublicMapper publicMapper;
-
@GetMapping("/user")
-
public Object getUser(){
-
List<LinkedHashMap<String,Object>> mapList = publicMapper.getPublicItems("select id,age,password,sex,username from user where id = 1");
-
return mapList;
-
}
注意事项:
Dao中getPublicItems返回值的Map集合要指定为LinkedHashMap,不然查询的数据和sql中字段顺序会不一致。