生命周期和作用域
注意:生命周期和作用域是至关重要的,因为错误的使用会导致非常严重的并发问题。
SqlSessionFactoryBuilder:(创建工厂)
- 一旦创建了SqlSessionFactory,就不在需要它
- 局部变量
SqlSessionFactory:
- 可以理解为:数据库连接池
- SqlSessionFactory一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃或重新创建另一个实例
- SqlSessionFactory的最佳作用域是应用作用域
- 使用单例模式或者静态单例模式
SqlSession:
- 连接到连接池的一个请求
- 用完之后需要关闭,否则资源被占用
ResultMap
结果集映射
<mapper namespace="com.lb.dao.UserMapper">
<!--结果集映射-->
<resultMap id="UserMap" type="User">
<!--column数据库中的字段,property实体类中的属性-->
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserById" resultMap="UserMap">
select * from mybatis.user where id = #{id}
</select>
</mapper>
- resultMap元素是MyBatis中最重要最强大的元素
- ResultMap的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。
- ResultMap最优秀的地方在于,虽然你已经对它相当了解了,但是根本不需要显式地用到它们。