三(一)mybatis接口映射sql 使用xml

来源:互联网 发布:善领p57数据升级 编辑:程序博客网 时间:2024/06/06 17:08

映射文件:Mapper.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">

****
<!--
namespace: 接口的全路径(包名.接口名)
   id: 接口中定义的方法名
   

   
接口绑定的参数
    1.可以通过索引的方式获取  索引从 0开始  
比如 ('sex','abc')  0='sex'  1='abc'
param1='sex'  param2='abc'

    2.接口定义的参数指定特定的名字 ep: @Param("a") String foodName

${}和#{}:

使用 #{键}方式 实际上 是使用 占位符  ? 来替代 
  
使用 ${键}方式 实际上 是使用值 直接替换对应的键 注意 如果是字符串 手工添加''


sql语句中出现 like '%xx%':
一般使用 ${}   ---  '%${}%'
如果使用#{} -- 则需要在传递参数时加上%%  
-->


<mapper namespace="cn.et.lesson2.xml.FoodInter">
   

  <select id="selectFood" resultType="java.util.Map">  //resultType:返回值类型

  <!--   select * from foods where foodname=#{0} and price=#{1}
    

     select * from foods where foodname=#{param1} and price=#{param2} 

-->

     select * from foods where foodname='${param1}' and price=${param2} 
     
  </select>
  
  <select id="selectFoodByFoodName" resultType="food">    
     select * from foods where foodname like '%${a}%'
  </select>


</mapper>


接口接口映射sql通过xml,接口中定义的方法的返回值类需要在xml文件中指定

public interface FoodInter {
public abstract List selectFood(String foodName,String price);

public abstract List selectFoodByFoodName(@Param("a") String foodName);

}


测试方法:


private  SqlSession getSession() throws IOException {
// mybatis核心配置文件路径
String resource = "cn/et/lesson2/xml/mybatis.xml";


InputStream inputStream = Resources.getResourceAsStream(resource);
// 工厂类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
// session操作的是指向sql语句的一个唯一标识符
SqlSession openSession = sqlSessionFactory.openSession();
return openSession;
}


@Test
public  void selectFood() throws IOException {

SqlSession openSession = getSession();

FoodInter mapper = openSession.getMapper(FoodInter.class);

/*List selectFood = mapper.selectFood("dd", "55");
System.out.println(selectFood);*/


List selectFoodByFoodName = mapper.selectFoodByFoodName("c");

System.out.println(selectFoodByFoodName);
}