Mybatis核心配置文件
除了上述基本的配置,还有一些常用的设置。
-
typeAliases(类型别名)
用xml设置别名(适用于实体类少的情况)
用注解在实体类上设置别名(适用于实体类比较多)<typeAliases> <typeAlias type="com.wang.pojo.User" alias="User"/> </typeAliases>
@Alias("user") public class User {}
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- databaseIdProvider(数据库厂商标识)
-
mappers(映射器)
**MapperRegistry:**注册绑定我们的Mapper文件
<!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册!--> 方式1:通过加载xml资源 <mappers> <mapper resource="com/wang/mapper/UserMapper.xml"/> </mappers> 方式2:通过加载类文件 <mappers> <mapper class="com.wang.mapper.UserMapper"/> </mappers> 方式3:通过包的方式进行扫描 <mappers> <package name="com.wang.mapper"/> </mappers>
生命周期和作用域的分析
开始---->SqlSessionFactoryBuilder(一旦创建就不再使用)----->SqlSessionFactory(一旦创建一直存在,类似与数据库连接池)----->SqlSession(连接到连接池的一个请求,存在方法里面,用完就关闭,否则占用资源,线程不安全)----->SQL Mapper(每一个Mapper代表每一个业务)----->结束
属性名和字段不一致问题:
1.起别名
<select id="getUserById" resultType="com.wang.pojo.User">
select id,name, pwd as password from mybatis.user where id = #{id}
</select>
2.使用resultMap(结果集映射)
<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>
nt" resultMap="UserMap">
select * from mybatis.user where id=#{id}
</select>