mybatis基础知识&(三)SqlMapConfig

SqlMapConfig.xml

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

1 需求

将数据库连接参数单独的配置在db.properties中,只需要在SQLMapConfig.xml中加载db.properties的属性值
在sqlMapConfig.xml中不需要对数据库连接参数硬编码
将数据库连接参数的配置在db.properties中,原因。方便对参数进行进一步统一管理,其他xml可以引用该db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/teacher_student
jdbc.username=root
jdbc.paaword=123

在sqlMapCongig。xml加载属性文件
    <!--加载属性文件-->
    <properties resource="db.properties" ></properties>
    <!--spring整合后environment将会废除--> 
 <environments default="development">

 <environment id="development">
     <!--使用jdbc事务管理,事务控制有mybatis-->
 <transactionManager type="JDBC"/>
 <!--数据库连接池,有mybatis管理-->
 <dataSource type="POOLED">
 <property name="driver" value="${jdbc.driver}"/>
 <property name="url" value="${jdbc.url}"/>
 <property name="username" value="${jdbc.username}"/>
 <property name="password" value="${jdbc.password}"/>
 </dataSource>
 </environment>
 </environments>    

properties特性
注意:
    在Mybatis将按照下面的顺序夹加载属性
    在properties元素体内定义的属性首先被读取
    然后读取properties,元素中resource或URL加载的属性,它会覆盖自己读取的同名属性
    最后读取parameterType传递的属性,他会覆盖自己读取的同名属性

建议:
    不要在properties元素体内加任何属性值,只将属性值定义在properties文件中
    在properties文件中定义属性名要有一定的特殊性,如xxx.xxx.xx

2.settings全局参数配置

mybatis=框架在运行时可以调整一些运行参数
比如:开启二级缓存,开启延迟加载
全局参数将会影响mybatis的运行方式

<!– 配置设置 –>  

       <settings>  
           <!– 配置全局性 cache 的 ( 开 / 关) default:true –>  

         <setting name=“cacheEnabled” value=“true”/>  

        <!– 是否使用 懒加载 关联对象  同 hibernate中的延迟加载 一样  default:true –>  

          <setting name=“lazyLoadingEnabled” value=“true”/>  

           <!– [当对象使用延迟加载时 属性的加载取决于能被引用到的那些延迟属性,否则,按需加载(需要的是时候才去加载)] –>  

        <setting name=“aggressiveLazyLoading” value=“true”/>  



         <!– 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true –>  

       <setting name=“multipleResultSetsEnabled” value=“true”/>  



        <!– 是否可以使用列的别名 (取决于驱动的兼容性) default:true–>  

       <setting name=“useColumnLabel” value=“true”/>  



        <!–允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false–>  

      <setting name=“useGeneratedKeys” value=“false”/>  



       <!–指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分  FULL:全部–>  

        <setting name=“autoMappingBehavior” value=“PARTIAL”/>  


         <!– 这是默认的执行类型   

          SIMPLE :简单    

           REUSE:执行器可能重复使用prepared statements 语句   

        BATCH:执行器可以重复执行语句和批量更新  

       –>  

        <setting name=“defaultExecutorType” value=“SIMPLE”/>  



        <!– 设置驱动等待数据响应的超时数  默认没有设置–>  

        <setting name=“defaultStatementTimeout” value=“25000″/>  



      <!– [是否启用 行内嵌套语句  defaut:false] –>  

       <setting name=“safeRowBoundsEnabled” value=“false”/>  



        <!– [是否 启用  数据中 A_column 自动映射 到 Java类中驼峰命名的属性 default:fasle] –>  

     <setting name=“mapUnderscoreToCamelCase” value=“false”/>  



       <!– 设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session –>  

         <setting name=“localCacheScope” value=“SESSION”/>  



        <!– 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER –>  

      <setting name=“jdbcTypeForNull” value=“DEFAULT”/>  



      <!– 设置触发延迟加载的方法  –>  

        <setting name=“lazyLoadTriggerMethods” value=“equals,clone,hashCode,toString”/>  



   </settings> 

3.typeAliases(别名)重点

3.1需求
在mapper.xml中定义很多的statement,statement需要parameterType指定输入参数的类型,需要resultType
指定的输出结果的映射类型
如果在指定的类型时输入类型的全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义
一些别名,在mapper.xml中通过别名定义,方便开发。
3.2常用的别名

别名 | 映射的类型
_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
map Map
3.3自定义别名
3.3.1单个别名的定义
<!–别名定义–>

    <typeAliases>
        <!--针对单个别名的定义
            type:类路径
            alias:别名
        -->
        <typeAliases type="mybaties.po.User" alias="user">
        </typeAliases>
引用别名
<select id="  "  parameterType="int" resultType="user">
</select>
3.3.2批量定义(常用)
    <!--批量别名的定义
    指定包名 ,mybatis自动扫描包中的po类,自动定义别名,别名就是类名,(首字母大写或小写都可以)
    -->
    <package name="mybaties.po"/>

4.typeHandlers(类型处理器)
mybatis中通过typeHandlers完成jdbc类型和java类型的转化
通常情况下,mybatis提供的类型处理器一般够用,我们不需要在自己进行定义了
类型处理器                       Java类型                       JDBC类型                                                  

BooleanTypeHandler Boolean,boolean 任何兼容的布尔值
ByteTypeHandler Byte,byte 任何兼容的数字或字节类型
ShortTypeHandler Short,short 任何兼容的数字或短整型
IntegerTypeHandler Integer,int 任何兼容的数字和整型
LongTypeHandler Long,long 任何兼容的数字或长整型
FloatTypeHandler Float,float 任何兼容的数字或单精度浮点型
DoubleTypeHandler Double,double 任何兼容的数字或双精度浮点型
BigDecimalTypeHandler BigDecimal 任何兼容的数字或十进制小数类型
StringTypeHandler String CHAR和VARCHAR类型
ClobTypeHandler String CLOB和LONGVARCHAR类型
NStringTypeHandler String NVARCHAR和NCHAR类型
NClobTypeHandler String NCLOB类型
ByteArrayTypeHandler byte[] 任何兼容的字节流类型
BlobTypeHandler byte[] BLOB和LONGVARBINARY类型
DateTypeHandler Date(java.util) TIMESTAMP类型
DateOnlyTypeHandler Date(java.util) DATE类型
TimeOnlyTypeHandler Date(java.util) TIME类型
SqlTimestampTypeHandler Timestamp(java.sql) TIMESTAMP类型
SqlDateTypeHandler Date(java.sql) DATE类型
SqlTimeTypeHandler Time(java.sql) TIME类型
ObjectTypeHandler 任意 其他或未指定类型
EnumTypeHandler Enumeration类型 VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值