MyBatis---mapper接口的使用

mapper映射文件

当我们在工程中设置好mybatis组件后,我们可以通过定义mapper的定义文件(如stuCardMapper.xml)来操作mapper。该文件对位置没有特殊要求,但是建议集中放置

放一下我自己写的代码:

<?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.zzh.mybatis.mappers.dao.StuCardMapper">
  <!-- 通过select执行查询,id用于标识映射文件中的sql(Statement-id)
	将sql语句封装到mappedstatement中
	#{}表示占位符
	parameterType-指定输入参数的类型
	#{id}-id表示输入的参数,参数名称就是id,如如果输入参数是简单类型,#{}中的参数可以任意
	resultType-指定sql输出结果所映射的java对象类型
	-->
   
	 <!-- 
    	resultMap标签可以映射select查询出来结果的集合,其主要作用是将实体类中的字段与数据库表中的字段进行关联映射。
    -->
   <resultMap id="stuCardMap" type="com.zzh.mybatis.mappers.entity.StuCard" >
   		<result column="stuNo" property="stuNo"/>
   </resultMap> 
   
    <!--通过stuNo来查询学生信息-->    
   <select id="getStuCardByStuNo" parameterType="String" resultMap="stuCardMap">
      select stuNo, stuName, money from stu_info where stuNo = #{value}
   </select>
  


	<!--如果不使用resultMap我们只需要设定正确的resultType就可以正常使用了 -->
   <select id="getStuCardByMoney" parameterType="String" resultType="com.zzh.mybatis.mappers.entity.StuCard">
      select * from stu_info where money = #{value}
   </select>
   
  
   <!-- if条件查询 -->
   <select id="getStuCardByAttrs" parameterType="com.zzh.mybatis.mappers.entity.StuCard" resultMap="stuCardMap">
   		select stuNo, stuName, money from stu_info 
   		<where>
   			<if test="stuNo != null and stuNo != ''">
   				and stuNo = #{stuNo}
   			</if>
   			<if test="stuName != null and stuName != ''">
   				and stuName = #{stuName}
   			</if>
   			<if test="money != null and money != ''">
   				and money = #{money}
   			</if>
   		</where>
   </select>
   <!--这里的 where、if 标签有语法不同于java,需要注意形式-->

<!-- 使用foreach组装sql语句-->
	<select id="getStuCardByStuNos" parameterType="List" resultMap="stuCardMap">
	   			select stuNo, stuName, money from stu_info
	   			<where>
	   				<if test="list != null">
	   					<foreach collection="list" item="stuNo" open="and stuNo in(" separator=", " close=")">
	   						#{stuNo}
	   					</foreach> 					
	   				</if>   			
	   			</where>   			
	   </select>
</mapper>

mapper的接口文件

在定义完mapper.xml后我们还需要写出mapper接口文件
注意:
1、Mapper.xml文件中的namespace与mapper接口的类路径相同。

2、Mapper接口方法名与Mapper.xml(StuCardMapper.xml)中定义的statement的id相同

3、Mapper接口方法的输入参数类型和StuCardMapper.xml中定义的statement的parameterType的类型相同

4、 Mapper接口方法的输出参数类型和StuCardMapper.xml中定义的statement的resultType的类型相同

代码如下:

package com.zzh.mybatis.mappers.dao;

import java.util.List;

import com.zzh.mybatis.mappers.entity.StuCard;

public interface StuCardMapper {

   public StuCard getStuCardByStuNo(String stuNo);
   // 根据stuNo查询学生信息
   public StuCard getStuCardByMoney(String money);
   //根据money查询学生信息


   //使用多个条件查询
   public List<StuCard> getStuCardByAttrs(StuCard stuCard);
   public List<StuCard> getStuCardByStuNos(List<String> stuNos);
   
   
}

测试类

package com.zzh.mybatis.mappers.dao;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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.zzh.mybatis.mappers.entity.StuCard;

public class MapperTest {

	private SqlSession session;
	
	@Before
	public void mybatiesTest() throws IOException {
		//先使用SqlSessionFactory创建会话工厂
		SqlSessionFactory ssf =new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("config/myBatis/mybatis-config.xml"));
		session = ssf.openSession();			
	}	

	@Test
	public void queryStuByStuNo() {
		//创建对象
		StuCardMapper cardMapper = session.getMapper(StuCardMapper.class);
		//通过学号查询信息		
		System.out.println("======================>"+cardMapper.getStuCardByStuNo("2018160203"));
		
		//通过money查询信息
		System.out.println("======================>"+cardMapper.getStuCardByMoney("10000"));
		
		
		StuCard stuCard = new StuCard();
		stuCard.setStuNo("2018160203");
		System.out.println("=================>" + cardMapper.getStuCardByAttrs(stuCard));
		
		
		List<String> stuNos = new ArrayList<String>();
		stuNos.add("2018160201");
		stuNos.add("2018160202");
		System.out.println("=================>" + cardMapper.getStuCardByStuNos(stuNos));
	}
	
	
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值