映射文件:Mapper.xml
<!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);
}