zoukankan      html  css  js  c++  java
  • mybatis的属性优化与别名优化

    在使用mybatis框架时,会发现几个比较麻烦的问题:

    例如在mybatis-config.xml配置文件中的代码

    <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>

    其中的driver、url、username、password等信息需要直接写在配置文件中,不方便使用,也不利于修改。这里可以使用mybatis的属性优化来解决、实现更简洁的操作;

    再例如像“com.wong.pojo.User”这样的路径,重复编写显得繁杂,这里就可以使用别名优化的方式来解决;

    属性优化

    mybatis的官方文档中,对属性优化是这样描述的:这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。这里抓住一个关键词:动态替换。即我们可以将需要的配置文件单独写在外部的配置文件中,需要时将其引入,并使用“${}”来引用,同样可以达到想要的效果。

    例如:我们可以将driver、url、username、password等信息写在db.properties文件中:

    driver = com.mysql.jdbc.Driver
    url = jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8
    username = root
    password = 123456

    并且在mybatis-config.xml中导入并使用:

    <!--引入外部配置文件-->
    <properties resource="db.properties" /><!--使用“${}”来引用-->
    <property name="driver" value="${driver}" />
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>

    这里需要注意一点,我们在mybatis-config.xml添加标签时经常会报错,此时要首先考虑标签的顺序问题,报错如下:

    如图所示,正确的顺序应该是"(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)",顺序错误即报错!

    别名优化

    类型别名
    • java的类型别名主要是为Java类型设置一个比较短的名称,方便使用;

    • 别名的作用仅限于减少类完全限定名的冗余

    第一种方式,采用typeAlias。(适合实体类比较少时使用,可以自定义名称)

    <!--可以给实体类起别名-->
    <typeAliases>
        <typeAlias type="com.wong.pojo.User" alias="user" />
    </typeAliases>

    第二种方式,采用package方式。(指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean。适合实体类比较多时使用,无法自定义名称,使用时默认名称为这个类类名的首字母小写,官方建议是小写字母,但大写也是可行的)

    <!--可以给实体类起别名-->
    <typeAliases>
        <package name="com.wong.pojo"/>
    </typeAliases>

    应用:

      <!--select查询语句-->
      <select id="selectUser" resultType="user">    /*使用别名user来替代com.wong.pojo.User*/
      select * from user
    </select>

    采用第二种方式时不能自定义名称,但是可以通过注解的方式来实现:

    sql语句:

      <!--select查询语句-->
      <select id="selectUser" resultType="hello">    /*使用注解名*/
      select * from user
    </select>

    结果也是可行的!

  • 相关阅读:
    mysql索引类型normal,unique,full text的区别
    php中模糊查询并关联三个select框
    JQuery实现获取多个input输入框的值,并存放在一个数组中
    Chrome 浏览器跨域和安全访问问题 使用 chrome的命令行标记:disable-web-security 参数联调线上数据
    sqlserver 出现 因为文件组 'PRIMARY' 已满 的解决办法 有可能是磁盘剩余空间不足 导致的
    asp.net 分析器错误消息: 文件.aspx.cs”不存在错误
    SQLSERVER排查CPU占用高的情况
    SQL Server Cpu 100% 的常见原因及优化
    Getting Started with OWIN and Katana(Console 代替iis 制作 web服务的简单方案)
    Base64 报错 的解决办法 (Base-64 字符数组或字符串的长度无效。, 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。)
  • 原文地址:https://www.cnblogs.com/awong18/p/13375684.html
Copyright © 2011-2022 走看看