Mybatis基础一,生命周期,和作用域,resultMap(结果集映射)

1.生命周期,和作用域,是至关重要的,因为错误的使用会导致严重的并发问题

并发问题流程图

注意:每一个sqlSession对应一个业务

   在用sqlSession去写增删改相关的业务时用提交事务(sqlSession.commit();)

   在每个持久层操作完毕后要将sqlSession关闭(sqlSession.close())

2.resultMap(结果集映射)

  2.1,为什么模拟场景:更好的了解resultMap(结果集映射),

  2.1,模拟场景:当数据库字段名和对应实体类属性不一致时:

      解决方式一,利用sql语句给字段起别名(让别名跟对应的实体类属性相同)

    <select id="getUserById" parameterType="int" resultType="user">
       select id,name,pwd as password from mybatis.user where id = #{id}
   </select>

    

    方式二,结果集映射

    <!--结果集映射-->
    <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" parameterType="int" resultMap="userMap">
       select * from mybatis.user where id = #{id}
   </select>

注意:当使用结果集映射时,sql操作标签中的resultType(返回参数类型)要改成resultMap

官方文档的解释:

  1. resultMap 元素是 MyBatis 中最重要最强大的元素
  2. ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。  
  3. ResultMap最优秀在于,虽然你已经相当了解她了,,但是根本就不需要显示的用到他们
原文地址:https://www.cnblogs.com/CL-King/p/13871057.html