MyBatis中三种查询方式
Mapper文件代码
<mapper namespace="com.java.mapper.FlowerMapper"> <select id="selectAll" resultType="flower"> select * from flower </select> <select id="selectOne" resultType="flower"> select * from flower where id=1 </select> <select id="selectMore" resultType="map"> select * from flower </select>
</mapper>
测试文件
public static void main(String[] args) throws IOException {//[1]解析mybatis.xml InputStream is = Resources.getResourceAsStream("myBatis.xml"); // [2]获得session工厂 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);//[3]获得session对象 SqlSession session = factory.openSession(); // [4]执行查询操作 // √【A】查询方式一 使用于查询多条数据的时候 List<Flower> list = session.selectList("com.bjsxt.mapper.FlowerMapper.selectAll"); // √【B】查询方式二 适用场景:查询最多是条数据的时候 Flower fl = session.selectOne("com.bjsxt.mapper.FlowerMapper.selectOne"); // 【C】查询方式三 selectMap("执行的方法","希望数据库的哪一列作为key") // 适用的场景 :查询的时候可以快速的通过某一列确定对应的数据 Map<Object, Object> map = session.selectMap("com.java.mapper.FlowerMapper.selectMore", "id"); Object fl = map.get(2); System.out.println(fl); // [5]关闭session session.close(); }}
}
MyBatis中三种参数传递
Mapper层代码
<!--方式一 public Flower selectOne2(Integer id) -->
<select id="selectOne2" resultType="flower" parameterType="int"> select * from flower where id=#{param1}
</select>
<!--方式二 public Flower selectOne3(Flower fl); -->
<select id="selectOne3" resultType="flower" parameterType="flower">
<!--id=#{对象中的属性名} -->
select * from flower where id=#{id} and name=#{name}
</select>
<!--方式三 public Flower selectOne3(Flower fl); -->
<select id="selectOne4" resultType="flower">
select * from flower where id=${a} and name=${b}
</select>
测试文件
//【A】参数传递一Flower fl = session.selectOne("com.java.mapper.FlowerMapper.selectOne2", 1);
// 【B】参数传递二
// Flower fl=new Flower();
fl.setId(1);fl.setName("玫瑰花");
// 【C】参数传递三Map<String,Object> map=new HashMap<>();
map.put("a", 1);
map.put("b", "'玫瑰花'");
Flower flo = session.selectOne("com.java.mapper.FlowerMapper.selectOne4", map);
System.out.println(flo);
[1]mybatis中parameterType 这个属性可以省略的 但是 resultType 是不可以省略的
[2]#{} 相当于占位符 ${} 相当于拼接