Mapper代理的输入映射和输出映射

输入映射类型:

简单类型

1映射文件

<!-- 根据用户ID查询用户信息 -->
<select id="findUserById" parameterType="int" resultType="cn.itcast.po.User">
	select * from user where id = #{id}
</select>


2Mapper接口

//根据用户ID查询用户信息 
	public User findUserById(int id)  throws Exception;


3测试

public class UserMapperTest {

	
	private SqlSessionFactory sqlSessionFactory;
	@Before
	public void setUp() throws Exception {
		//读取配置文件
		String resource ="SqlMapConfig.xml";
		InputStream inputStream =  Resources.getResourceAsStream(resource);
		//创建SqlSessionFactory
		 sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);	

	}

	@Test
	public void testFindUserById() throws Exception {
		//创建UserMapper对象
		SqlSession sqlSession =  sqlSessionFactory.openSession();
		//由mybatis通过Sqlsession创建代理对象
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		User user = userMapper.findUserById(1) ;
		System.out.println(user);
		sqlSession.close();
		
	}
}


pojo类型

1映射文件

<!-- 添加用户 -->
<insert id="insertUser" parameterType="cn.itcast.po.User">
	insert into User(username, birthday, sex, address) values(#{username}, #{birthday},#{sex},#{address})
</insert>


2Mapper接口

//添加用户 
	public void insertUser(User user);


3测试

	@Test
	public void testInsertUser() {
		//创建UserMapper对象
		SqlSession sqlSession = sqlSessionFactory.openSession(true) ;
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class) ;
		User user = new User() ;
		user.setUsername("znzn");
		user.setAddress("hubei");
		userMapper.insertUser(user);
		sqlSession.close();
		
		
	}


包装类型

1定义包装pojo类型类

package cn.itcast.po;


import java.util.HashMap;
import java.util.Map;


public class UserCustom {
private User user ;
Map<String, Object> map = new HashMap<String, Object>() ;


public User getUser() {
return user;
}


public void setUser(User user) {
this.user = user;
}


public Map<String, Object> getMap() {
return map;
}


public void setMap(Map<String, Object> map) {
this.map = map;
}




}

2映射文件

<select id="findUserList" parameterType="cn.itcast.po.UserCustom" resultType="cn.itcast.po.User">
	select * from user where
	username like '%${user.username}%'
	and sex = #{user.sex}
</select>


3Mapper接口

public List<User> findUserList(UserCustom user) ;


4测试

@Test
	public void testFindUserList() {
		//创建UserMapper对象
		SqlSession sqlSession = sqlSessionFactory.openSession(true) ;
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class) ;
		
		UserCustom userCustom = new UserCustom();
		User user = new User() ;
		user.setSex("1");
		user.setUsername("小明");
		userCustom.setUser(user);
		
		List<User> list = userMapper.findUserList(userCustom);
		int count = userMapper.findUserCount(userCustom);
		
		System.out.println(list);
		System.out.println(count);
		sqlSession.close();	
	}



map或list类型

1映射文件

<select id="findUserByIdList" parameterType="java.util.List" resultType="user">
	select * from user
	<where>
		<if test="list != null and list.size() > 0">
			<foreach collection="list" item="id" open="And id IN(" close=")" separator=",">
				#{id}
			</foreach>
			
		</if>
	</where>
</select>


2UserMapper接口

public List<User> findUserByIdList(List<Integer> idList);


3测试

	@Test
	public void testFindUserByIdList(){
		SqlSession sqlSession = sqlSessionFactory.openSession();
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		List<Integer> idList = new ArrayList<Integer>();
		idList.add(1);
		idList.add(10);
		idList.add(16);
		List<User> list = userMapper.findUserByIdList(idList);
		System.out.println(list);
	}


输出类型


分两种 resultType 和 resultMap


resultType简单类型 pojo类型

简单类型

1映射文件

<select id="findUserCount" parameterType="cn.itcast.po.UserCustom" resultType="int">
	select count(*) from user where
	username like '%${user.username}%'
	and sex = #{user.sex}
</select>

pojo类型

<!-- 根据用户ID查询用户信息 -->
<select id="findUserById" parameterType="int" resultType="cn.itcast.po.User">
	select * from user where id = #{id}
</select>


resultMap     pojo类型

1映射文件

<!-- resultMap入门  id标签 专门为查询结果中唯一列映射 result映射查询结果中的普通列 -->
<resultMap type="cn.itcast.po.User" id="UserRstMap">
<id column="id_" property="id" />
<result column="username_" property="username"/>
<result column="sex_" property="sex" />
</resultMap>
<select id="findUserRstMap" parameterType="int" resultMap="UserRstMap">
	select id id_,  username username_, sex sex_ from user 
	where id = #{id}
</select>


2Mapper接口

public User findUserRstMap(int id) ;


3测试

@Test
	public void testFindUserRstMap() {
		//创建UserMapper对象
		SqlSession sqlSession = sqlSessionFactory.openSession(true) ;
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class) ;
		User user = userMapper.findUserRstMap(1);
		
	
		System.out.println(user);
		sqlSession.close();	
	}
	



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值