mybatis - [08] mybatis-config.xml 详解

mybatis-config.xml中的标签需要按照一定顺序配置,否则会有以下提示。

 

 

一、properties(属性)

(1)属性可以放在jdbc.properties中,也可以写在<property>标签中

<!-- 第一种写法 -->
<properties resource="jdbc.properties"/>

<!-- 第二种写法 -->
<properties resource="jdbc.properties">
    <property name="username" value="harley686"/>
    <property name="password" value="harley666"/>
</properties>

(2)jdbc.properties中进行如下配置

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=123456

(3)无论在<properties>标签中引入.properties配置文件还是使用<property>标签设置的属性,都使用${value}的方式取值

<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>

(4)测试结果

 

 

二、settings(设置)

参考:https://mybatis.org/mybatis-3/zh_CN/configuration.html#settings

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="aggressiveLazyLoading" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="safeResultHandlerEnabled" value="true"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
  <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>
  <setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumTypeHandler"/>
  <setting name="callSettersOnNulls" value="false"/>
  <setting name="returnInstanceForEmptyRow" value="false"/>
  <setting name="logPrefix" value="exampleLogPreFix_"/>
  <setting name="logImpl" value="SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING"/>
  <setting name="proxyFactory" value="CGLIB | JAVASSIST"/>
  <setting name="vfsImpl" value="org.mybatis.example.YourselfVfsImpl"/>
  <setting name="useActualParamName" value="true"/>
  <setting name="configurationFactory" value="org.mybatis.example.ConfigurationFactory"/>
</settings>
 

 

三、typeAliases(类型别名)

  mapper.xml中会有很多resultType="com.harley.pojo.User",结果集类型填写的是Pojo类的全限定名,全限定名比较长,为了使用方便,为Pojo类设置类型别名。

(1)在mybatis-config.xml中为Pojo类配置别名

<typeAliases>
    <typeAlias alias="User" type="com.harley.pojo.User"/>
</typeAliases>

(2)在mapper.xml中使用别名

<select id="getUserLike" resultType="User">
    select * from user where name like '%${value}%'
</select>

(3)测试结果

 

除了可以给类设置别名,还可以为包名设置别名

(1)为pojo类所在包设置别名

<typeAliases>
    <package name="com.harley.pojo"/>
</typeAliases>

(2)可以在mapper.xmlresultType="User"(User必须和类名一致),也可以使用@Alias("harleyUser")为pojo包下的实体类设置别名

注:使用lombok的注解@AllArgsConstructor@NoArgsConstructor@Data@ToString,可以省略getter/setter、有参/无参构造方法、toString方法的编写

(3)mapper.xmlresultType="User"需要和@Alias("User")对应,别名是小写,mapper.xml中使用时也必须是小写!

<select id="getUserLike" resultType="harleyUser">
    select * from user where name like '%${value}%'
</select>

(4)测试结果

总结:

(1)如果实体类数量比较少,使用第一种方式;如果实体类数量比较多,则使用第二种方式。

(2)第一种可以自定义别名,第二种不行。如果非要改,需要在实体类上加注解@Alias("别名")

 

 

 

 

七、environments(环境配置)

可以配置多个环境,但是每个SqlSessionFactory实例只能选择一种环境。

mybatis默认的事务管理器(transactionManager)就是JDBC,连接池(dataSource)是POOLED

注意<environments>的default需要配置一个<environment>的id

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
        </dataSource>
    </environment>
</environments>

 

 

 

 

 

 

 

— 业精于勤荒于嬉,行成于思毁于随 —

posted @ 2024-06-05 15:44  HOUHUILIN  阅读(6)  评论(0编辑  收藏  举报