Mapper文件
<!--包名+接口名-->
<mapper namespace="com.lzj.mapper.FlowerMapper2">
<!--public Flower selectOne(int id);-->
<select id="selectOne" resultType="flower" parameterType="int">
<!--根据传入参数的下标获得内容-->
<!--当且仅当只传入一个参数的时候,接受的名字可以任意书写-->
select * from flower where id =#{0}
</select>
<!--
public Flower selectOne2(int id ,String name)
public Flower selectOne2(Flower fl);
-->
<select id="selectOne2" resultType="flower" >
select * from flower where id =#{id} and name =#{name}
</select>
<!--
public Flower selectOne2(int a ,String b)
parameterType:可以省略的
-->
<select id="selectOne3" resultType="flower" >
select * from flower where id =${a} and name =${b}
</select>
</mapper>
测试类
public class TestC {
public static void main(String[] args) throws Exception {
//【1】解析mybatis.xml
InputStream inputStream = Resources.getResourceAsStream("MyBatis.xml");
//[2]获得session工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
//[3]获得session对象
SqlSession session = factory.openSession();
//[4]调用方法
//【A】参数传递一
Flower flower = session.selectOne("com.lzj.mapper.FlowerMapper2.selectOne", 1);
//【B】参数传递二
Flower fl =new Flower();
fl.setName("玫瑰花");
fl.setId(1);
Flower flower = session.selectOne("com.lzj.mapper.FlowerMapper2.selectOne2", fl);
//【B】参数传递三
Map<String,Object> map =new HashMap<>();
map.put("a",1);
map.put("b","'玫瑰花'");
Flower flower = session.selectOne("com.lzj.mapper.FlowerMapper2.selectOne3", map);
System.out.println(flower);
//[5]关闭
session.close();
}
}
[注]:#和$的区别
#{}相当于占位
${} 相当于字符串的拼接