Java框架:MyBatis(四)

MyBatis的映射文件

输入映射ParameterType

1,传递简单类型
2,传递POJO对象
3,传递POJO包装对象
4,传递Map对象

输出映射resultType/resultMap

1,resultType
使用resultType进行结果映射时,查询的列名和映射的POJO属性名完全一致,该列才能映射成功。
如果查询的列名和映射的POJO属性名全部不一致,则不会创建POJO对象;
如果查询的列名和映射的POJO属性名有一个一致,就会创建POJO对象。

输出简单类型:
当输出结果只有一列时,可以使用resultType指定简单类型作为输出结果类型
案例:输出一个count(*)

UserMapper.java:

public interface UserMapper {
    /**
     * @param user
     * @return 受影响的行数
     */
    public int save(User user);

    public User findUserById(int id);

    public List<User> findUserByUserQueryVO(UserQueryVO vo);

    public List<User> findUserByMap(Map<String, Object> map);

    /**
     * 返回用户的个数
     * @param vo
     * @return
     */
    public int findUserCount(UserQueryVO vo);
}

UserMapper.xml:

	<!--查找用户的个数-->
    <!--设置返回的数据为基本类型 int double long string-->
    <select id="findUserCount" parameterType="userQueryVO" resultType="int">
        select count(*) from user where sex = #{user.sex}
    </select>

Demo06.java:

public class Demo06 {

    SqlSession session;

    @Before
    public void before() throws IOException {
        System.out.println("before........... 获取Session");
        //a、读取配置文件
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
        //b、通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        session = sessionFactory.openSession();
    }

    @After
    public void after()  {
        System.out.println("after...............关闭Session");
        //e、关闭SqlSession
        session.close();
    }

    @Test
    public void test1() throws IOException {

        UserMapper mapper = session.getMapper(UserMapper.class);
        //通过模型的包装类查询用户
        UserQueryVO query = new UserQueryVO();
        User user = new User();
        user.setSex("1");//查找男性
        query.setUser(user);

        int count = mapper.findUserCount(query);
        System.out.println("男性用户人数:"+count);
    }
}

输出结果:

在这里插入图片描述

输出POJO单个对象:

代码:

public interface UserMapper{
	public void save(User user);
	public User findUserById(int id);
}

xml配置:

<select id="findUserById" parameterType="int" resultType="user">
	select * from user where id = #{?}
</select>

输出POJO列表:
核心代码:

public List<User> findUserList(UserQueryVo userQueryVO);

xml配置:

	<select id="findUserCount" parameterType="userQueryVO" resultType="int">
        select * from user where sex = #{user.sex} and username like '%${user.username}%'
    </select>

2,resutMap
如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。

 	/**
     * 结果类型为resultMap
     * @throws IOException
     */
    @Test
    public void test2() throws IOException {

        UserMapper mapper = session.getMapper(UserMapper.class);

        User user = mapper.findUserByIdResultMap(1);
        System.out.println("用户数据:"+user);
    }
  • 1、定义resultMap
  • 2、使用resultMap作为statement的输出映射类型
    在这里插入图片描述

总结:
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功
如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值