[MyBatis]查询语句的返回/list/map

List

public List getPersonByLikeName(@Param("p_Name") String name);
<!--返回值类型为List,
    mybatis会自动封装,
    【resultType】还是写list里的实体类类型而不是写list-->
    <select id="getPersonByLikeName" resultType="com.yiki.Entity.Person">
        select * from Person
         where  p_name like #{p_Name}
    </select>

测试类

public void selectReturnList() throws IOException {
  start();
  PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
  List list = mapper.getPersonByLikeName("%t%");//名字里带e字母的
  System.out.println(list.toString());
  sqlSession.close();
  log.debug("test");

 }

Map

单条记录

public Map<String,Object> getPersonByIdReturnMap(@Param("id") Integer id);
<!--返回值为map:<列名+对应值>
       map是框架起的别名
       -->
    <select id="getPersonByIdReturnMap" resultType="map">
     select * from Person where pid = #{id}
    </select>
public void selectReturnMap() throws IOException {
  start();
  PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
  Map map = mapper.getPersonByIdReturnMap(1);
  System.out.println(map);
  //key      value
  //id        1
  //p_name tiffany
  System.out.println(map.get("pid"));
  sqlSession.close();
  log.debug("test");

 }

多条记录

需要知道map的key是什么东西,如指定为主键或其他列名

@MapKey("pId")
 public Map<Integer,Person> getPersonByIdReturnMutipleMap(@Param("p_Name") String name);
<!--返回多条map
    返回值为<Integer,Person> 对应 主键+对象
        【resultType】还是写map里的实体类类型而不是写map
    -->
    <select id="getPersonByIdReturnMutipleMap"
            resultType="com.yiki.Entity.Person">
             select * from Person where p_name like #{p_Name}
    </select>
public void selectReturnMutipleMap() throws IOException {
  start();
  PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
  Map map = mapper.getPersonByIdReturnMutipleMap("tiffany");
  System.out.println(map);
  //key      value
  //1        person1
  //2        person2
  System.out.println(map.get(1));
  sqlSession.close();
  log.debug("test");

 }



经验分享 程序员 微信小程序 职场和发展