MyBatis中三种查询方式
Mapper文件代码
<mapper namespace="com.bjsxt.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.bjsxt.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.bjsxt.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.bjsxt.mapper.FlowerMapper.selectOne4", map);
System.out.println(flo);
[1]mybatis中parameterType 这个属性可以省略的 但是 resultType 是不可以省略的
[2]#{} 相当于占位符 ${} 相当于拼接