一、使用场景
当数据库里的列名和实体类的属性名不一致,就需要进行结果映射
二、UserMapper接口
package com.william.dao;
import com.william.domain.QueryValueObject;
import com.william.domain.User;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
public interface UserMapper {
/**
* 结果映射
* @param username
* @param sex
* @param startIndex
* @param pageSize
* @return
*/
public List<User> findByManyConditionByParamByResultMap(@Param("username") String username, @Param("sex") String sex, @Param("startIndex")Integer startIndex,@Param("pageSize") Integer pageSize);
}
三、UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.william.dao.UserMapper">
<!--结果映射-->
<!--
id :唯一标识
type:返回值类型
-->
<resultMap id="userMap" type="user">
<!--映射主键
column:列名
property:属性名
-->
<id column="id" property="id"></id>
<result column="_username" property="username"></result>
</resultMap>
<select id="findByManyConditionByParamByResultMap" resultMap="userMap">
select * from user where _username like "%"#{username}"%" and sex=#{sex}
limit #{startIndex},#{pageSize}
</select>
</mapper>
四、TestCrud测试类
package com.william;
import com.william.dao.UserMapper;
import com.william.domain.QueryValueObject;
import com.william.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
/**
* @author :lijunxuan
* @date :Created in 2019/7/12 10:16
* @description :
* @version: 1.0
*/
public class TestCrud {
/**
* 结果映射 Mybatis多条件直接查询Param注解版
* @throws IOException
*/
@Test
public void findByManyConditionByParamByResultMap() throws IOException {
InputStream inputStream = Resources.getResourceAsStream("Mybatis-configuration.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取某接口的动态代理对象(获取某接口的一个实现类)
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
QueryValueObject queryValueObject = new QueryValueObject();
List<User> userMapperByConditionByMap = userMapper.findByManyConditionByParamByResultMap("a","男",0,7);
for (User user1 : userMapperByConditionByMap) {
System.out.println(user1);
}
sqlSession.close();
}
}