MyBatis学习笔记4-深入学习MyBatis配置          返回主页

Mapper接口返回单个对象和集合对象

  1. 不管查询的记录是单条还是多条,在Statement的resultType的定义一致,都是单条记录映射的POJO类型
  2. 对于Mapper的接口,如果返回单个对象,则返回值类型是单个POJO,生成的代理对象的内部会通过selectOne获取记录
  3. 如果返回值类型是集合对象,则生成的代理对象内部会通过selectList获取记录
  4. 如果方法调用的Statement返回多条记录,而Mapper.java方法的返回值为POJO,此时代理对象通过selectOne调用,由于返回多条记录,所以报错
  5. 输入的参数可扩展性没有问题,虽然只有一个参数。但是Dao层是通用的,因此可以通过扩展POJO从而将不同的参数传入进去

SqlMapConfig配置内容及顺序

    properties(属性)
    settings(全局配置参数)
    typeAliases(类型别名)
    typeHandlers(类型处理器)
    objectFactory(对象工厂)
    plugins(插件)
        environments(环境集合属性对象)
            environment(环境子属性对象)
                transactionManager(事务管理)
                dataSource(数据源)
    mappers(映射器)

properties属性定义

  1. 可以把一些通用的属性值配置在属性文件中,加载到mybatis运行环境内。

    比如:创建db.properties配置数据库连接参数。
    
  2. 注意: MyBatis 将按照下面的顺序来加载属性:

    在 properties 元素体内定义的属性首先被读取。
    然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
    最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
    

建议使用properties,不要在properties中定义属性,只引用定义的properties文件中属性,并且properties文件中定义的 key要有一些特殊的规则,避免代码错误。

settings(全局配置参数)

  1. Mybatis运行时可以配置一些全局参数,相当于软件运行参数
  2. 注意:小心配置,因为配置参数会影响MyBatis的执行
  3. MyBatis中没有了Ibatis的全局参数,这些参数由mybatis自己调节

自定义别名

        <typeAliases>
                <!--
                单个别名的定义
                alias:别名,type:别名映射的类型  -->
                 <typeAlias type="cn.mybatis.po.User" alias="user"/>
                <!-- 批量别名定义
                指定包路径,自动扫描包下边的pojo,定义别名,别名默认为类名(首字母小写或大写)
                 -->
                <package name="cn.itcast.mybatis.po"/>

            </typeAliases>

使用别名

  1. 在parameterType、resultType中使用别名:resultType = “user”
  2. 批量别名命名,指定一个包路径,自动扫描包下的POJO,定义别名,默认为类名,首字母小写或大写

    即:比如实体类所在包围com.mybatis.model,其中有很多的POJO
    不需要<typeAlias type="cn.mybatis.po.User" alias="user"/>这种方式
    频繁的指定别名,而是通过<package name="com.mybatis.model"/>这个方式
    让Mybatis批量命名