MyBatis学习笔记——09MyBatis的输出核心(掌握)

输出映射

完整学习路线:https://blog.csdn.net/qq_40163148/article/details/89668242

1.resultType

使用resultType进行输出映射,只有列名和pojo中定义的一致,该列才能映射成功(也就是说使用sql语句列的别名会映射失败)
如果列名和pojo中的属性名全都不一致,则不会创建pojo对象
只要列名和pojo中的属性名有一个一致的,就会创建pojo对象,哪个一致创建哪个

1.1输出简单类型

需求:用户信息综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实现分页

1. mapper.xml

在这里插入图片描述在这里插入图片描述

<!-- 用户信息综合查询总数 -->
<select id="findUserCount"  parameterType="UserQueryVo" resultType="int">
select count(*) from userdb where userdb.user_sex=#{userCustom.user_sex} and userdb.user_name like '%${userCustom.user_name}%'
</select>

2.mapper.java

在这里插入图片描述

package com.lipengge.mybatis.mapper;

import java.util.List;

import com.lipengge.mybatis.bean.User;
import com.lipengge.mybatis.bean.UserCustom;
import com.lipengge.mybatis.bean.UserQueryVo;

public interface UserMapper {
  /*要写mapper.xml映射文件(和User.xml文件是相同的只不过改动了namespace)
   * mybatis自动代理开发规范:
   * 特别重要:mapper.xml中的namespace必须和mapper.java中的全限定性名一致(com.lipengge.mybaits.UserMapper)
   *        不要忘了在SqlMapConfig.xml中配置mapper.xml
   * 1.mapper.java接口函数名必须和statement的id一致
   * 2.mapper.java接口函数参数必须和mapper.xml中的一致
   * 3.mapper.java接口函数返回类型必须和mapper.xml中的一致
   * 使用须知:
   * 4.如果mapper返回单个pojo对象则代理对象内部通过selectOne()来实现
   * 5.如果mapper返回多个pojo对象则代理对象内部通过selectList()来实现
   */
  //1.根据id查询用户
 public User findUserById(int id) throws Exception;
 //2.根据name查询用户模糊查询
 public List<User> findUserByName(String name) throws Exception;
 //3.插入用户
 public void insertUserById(User user) throws Exception;
 //4.删除用户
 public void deleteUserById(int id) throws Exception;
 //5.用户信息综合查寻
 public List<UserCustom> findUserList(UserQueryVo userQueryVo) throws Exception;
 //6.用户信息综合查询总数
 public int findUserCount(UserQueryVo userQueryVo) throws Exception;
 //7.根据id查询用户(别名查询)
 public User findUserByIdResultMap(int id) throws Exception;
 
}

实现类

在这里插入图片描述

package com.lipengge.mybatis.first;

import static org.junit.Assert.*;

import java.io.InputStream;

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.Before;
import org.junit.Test;

import com.lipengge.mybatis.bean.User;
import com.lipengge.mybatis.bean.UserCustom;
import com.lipengge.mybatis.bean.UserQueryVo;
import com.lipengge.mybatis.mapper.UserMapper;

public class TestMapper {
  private SqlSessionFactory ssf;
  @Before
  public void setUp() throws Exception {
  	String resource="SqlMapConfig.xml";
  	InputStream inputStream = Resources.getResourceAsStream(resource);
  	ssf= new SqlSessionFactoryBuilder().build(inputStream);
  }
  @Test
  public void test() throws Exception {
  	SqlSession openSession = ssf.openSession();
  	//mybatis自动生成usermapper代理对象
  	UserMapper um=openSession.getMapper(UserMapper.class);
//		System.out.println(um.findUserById(6));
//		System.out.println(um.findUserByName("振川"));
//		User user=new User();
//		user.setUser_age(63);
//		user.setUser_name("王八蛋");
//		user.setUser_name("男");
//		um.insertUserById(user);
//		System.out.println(user.getId());
	um.deleteUserById(22);
  	UserQueryVo userQueryvo=new UserQueryVo();
  	UserCustom userCustom=new UserCustom();
  	userCustom.setUser_sex("男");
  	userCustom.setUser_name("振川");
  	userQueryvo.setUserCustom(userCustom);
  	System.out.println(um.findUserCount(userQueryvo));
//		System.out.println(um.findUserList(userQueryvo));
//		System.out.println(um.findUserByIdResultMap(6));
  	
  	openSession.close();
  	
  }

}

小结:

查询出来的结果集只有一行一列,可以使用简单类型进行输出映射

1.2输出pojo对象和pojo列表

不管是输出的是单个pojo对象还是pojo列表(list中有pojo),resultType中写的都是pojo类
在mapper.java中的返回值类型不一样
1.方法返回值为单个对象,输出单个pojo对象
2.方法返回值为list,输出为list

2.resultMap

mybatis中使用resultMap完成高级输出结果映射
2.1resultMap的使用方法(mapper.xml同上)
如果列名书写和pojo中的不一致,通过resultMap对列名和pojo属性名之间做一个映射关系(可以使用sql别名了)
2.1定义resultMap

在这里插入图片描述

<!-- 
type 映射类型 user别名
id resultMap标识
-->
<resultMap type="user" id="UserResultMap">
   <!-- id表示查询结果集中的唯一标识 
        column表示书写的列名
        property表示pojo属性名
                      最终resultMap对column和property做一个映射关系
   -->
   <id  column="id_" property="id" />
   <!-- 
   result表示对普通结果类型的定义
   column表示书写的列名
   property表示pojo属性名
          最终resultMap对column和property做一个映射关系
    -->
   <result  column="sex_" property="user_sex" />
</resultMap>
2.2使用resultMap作为statement的输出映射类型

在这里插入图片描述

<!-- 使用resultMap作为输出映射结果类型  
     如果这个resultMap在别的mapper.xml里应该加上那个mapper.xml的namespace
-->
<select id="findUserByIdResultMap"  parameterType="int" resultMap="UserResultMap">
      SELECT id id_,user_sex sex_ FROM USERDB WHERE id = #{id}
 </select>

mapper.java(同上)

在这里插入图片描述

实现类(同上)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值