zoukankan      html  css  js  c++  java
  • MyBatis日记(三):戏说MyBatis配置文件

    properties标签

    properties标签可以用来加载别的配置文件,比如可以加载数据库的配置文件,jdbc.properties。

    下面是jdbc.properties

    1 jdbc.driverClassName=com.mysql.jdbc.Driver
    2 jdbc.url=jdbc:mysql://localhost:3306/db_mbre
    3 jdbc.username=root
    4 jdbc.password=123456

    然后在全局的配置文件MyBatis-config.xml中引入该配置文件:

     1 <properties resource="jdbc.properties" /> 

    引入以后就可以在全局配置文件中配置数据库时,使用这些信息了:

    1 <dataSource type="POOLED">
    2     <property name="driver" value="${jdbc.driverClassName}" />
    3     <property name="url" value="${jdbc.url}" />
    4     <property name="username" value="${jdbc.username}" />
    5     <property name="password" value="${jdbc.password}" />
    6 </dataSource>

    加载properties的顺序:

    1、  先加载<properties>标签下的property标签,观察有没有对应的键值对

    2、  然后在加载properties的resource属性指定的配置文件。

    typeAlias标签

    MyBatis默认支持的别名:

    别名

    映射的类型

    _byte

    byte

    _long

    long

    _short

    short

    _int

    int

    _integer

    int

    _double

    double

    _float

    float

    _boolean

    boolean

    string

    String

    byte

    Byte

    long

    Long

    short

    Short

    int

    Integer

    integer

    Integer

    double

    Double

    float

    Float

    boolean

    Boolean

    date

    Date

    decimal

    BigDecimal

    bigdecimal

    BigDecimal

    自定义别名

    MyBatis对于基本的数据类型定义了别名,我们可以为我们自己创建的pojo类定义别名,定义别名采用的是<typeAliases>标签:

    1 <typeAliases>
    2     <typeAlias alias="Student" type="com.Aiden.domain.Student" />
    3 </typeAliases>

    定义完别名以后,就可以在mapper文件中使用别名了:

    批量定义别名,直接定义包名,包下面的类的别名默认为类名。首字母大小写即可。

    Mapper标签

    Mapper标签用于引入mapper配置文件:

    <mapper resource=””> 使用相对于类路径的资源

    <mapper url=””> 使用完全限定路径

    <mapper class=””> 使用mapper接口的全限定名(此方法要求mapper接口和mapper映射文件要名称相同,且放在同一个目录下面)

    <package name=””> 注册指定包下的所有映射文件(此方法要求mapper接口和mapper映射文件要名称相同,且放在同一个目录下面)

    environment标签

    MyBatis可以配置多种环境。你如开发时的环境、测试时的环境。这样可以将SQL映射应用于多种数据库之中。(注:可以配置多种环境,但每个数据库对应一个SQLSessionFactory,如果想连接两个数据库,则需要创建两个SqlSessionFactory实例,每个数据库对应一个)。

    为明确创建哪种环境,可以将它作为可选的参数传递给SQLSessionFactoryBuilder。

    可接受环境配置的两个方法签名是:

    SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment);

    SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,environment,properties);

    如果环境被忽略,那么默认环境将会被加载,按照如下方式进行:

    SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader);

    SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,properties);

    配置如下:

     1 <environments default="development">
     2         <environment id="development">
     3             <transactionManager type="JDBC" />
     4             <dataSource type="POOLED">
     5                 <property name="driver" value="${jdbc.driverClassName}" />
     6                 <property name="url" value="${jdbc.url}" />
     7                 <property name="username" value="${jdbc.username}" />
     8                 <property name="password" value="${jdbc.password}" />
     9             </dataSource>
    10         </environment>
    11         <environment id="test">
    12             <transactionManager type="JDBC" />
    13             <dataSource type="POOLED">
    14                 <property name="driver" value="${jdbc.driverClassName}" />
    15                 <property name="url" value="${jdbc.url}" />
    16                 <property name="username" value="${jdbc.username}" />
    17                 <property name="password" value="${jdbc.password}" />
    18             </dataSource>
    19         </environment>
    20     </environments>

    Settings

    MyBatis全局配置参数,全局参数将会影响MyBatis的运行行为。比如:开启二级缓存、开启延时加载。具体可配置情况如下:(摘自《深入浅出MyBatis技术原理与实践》)

    POJO的映射文件(mapper.xml)

    Mapper.xml映射文件中定义了操作数据库的SQL,每个数据库SQL 是一个statement ,映射文件是MyBatis的核心。

    ParameterType(输入类型)

    通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型。#{}实现的是向prepareStatement中的预处理语句中设置参数值,SQL语句中#{}表示一个占位符。例如:

    使用占位符#{}可以有效防止SQL注入,在使用时不需要关心参数值的类型,MyBatis会自动进行Java类型和jdbc类型的转换。#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单属性值,#{}括号可以是value或其他名称。

    resultType

    使用resultType可以进行输出映射,只有查询出来的列名和pojo中的属性名一致,才可以映射成功。如果查询出来的列名和pojo中的属性名全部不一致,就不会创建pojo对象。但是只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。

    resultType可以输出简单类型。例如查询用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实现分页。

     

    resultMap

    mybatis中可以使用resultMap完成高级输出结果映射。如果查询出来的列名和定义的pojo属性名不一致,就可以通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。然后使用resultMap作为statement的输出映射类型。resultMap可以实现将查询结果映射为复杂类型的pojo。

  • 相关阅读:
    android语音识别 android.speech 包分析
    [Android]MIT App Inventor
    How C/C++ Debugging Works on Android
    Android JNI相关
    Google非官方的Text To Speech和Speech Recognition的API
    Cygwin/MinGW
    VoxForge collect transcribed speech for use with Free and Open Source Speech Recognition Engines
    Voice Search/Actions for Android
    如何查看网页编码
    [转]Python__builtin__与__builtins__的区别与关系(超详细,经典)
  • 原文地址:https://www.cnblogs.com/guoxiangyue/p/10791707.html
Copyright © 2011-2022 走看看