MyBatis实战记录(二)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-13 06:20   595   0

开始配置Mapper了(基于mybatis-spring 1.1.1)

第二天

  1. 忽然发现ibatis的mapper配置和mybatis配置完全不一样,原来生成好的mapper都废了,除了基本的sql,include,insert之类的,复杂的都变了,我苦,删了原来的mapper xml,开始重新搞
    <!-- ibatis -->
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
        "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    
    <sqlMap namespace="Test"><!-- ibatis是自定义的,随便定个名字就好,只要你自己找的到 -->
        <select id="query">...</select><!-- 这个id也已样,随便定个名字就好,反正要你自己找... -->
    </sqlMap>
    
    <!-- mybatis -->
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.dal.ITestDAO"><!-- mybatis是自动匹配的,所以namespace必须使用接口的全名称 -->
        <select id="query">...</select><!-- 这个id必须和你接口函数名称定义的一样,貌似不能重载了... -->
    </mapper>
     

  2. resultMap在mybatis貌似不用定义,mybatis有强大的自动mapper机制,除非有列名和属性名称对不上的,而这一点ibatis是不是这样我也不知道
  3. mybatis全面放弃原来的标签式说明,转向表达式了(el?)http://www.mybatis.org/core/dynamic-sql.html
  4. 给mybatis加上配置,搞了半天配置文件原来这样配
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
     <settings>
      <setting name="cacheEnabled" value="true" />
      <setting name="lazyLoadingEnabled" value="false" />
      <setting name="multipleResultSetsEnabled" value="true" />
      <setting name="useColumnLabel" value="true" />
      <setting name="useGeneratedKeys" value="false" />
      <setting name="autoMappingBehavior" value="PARTIAL" />
      <setting name="defaultExecutorType" value="SIMPLE" />
      <setting name="defaultStatementTimeout" value="25000" />
      <setting name="safeRowBoundsEnabled" value="false" />
      <setting name="mapUnderscoreToCamelCase" value="false" />
      <setting name="localCacheScope" value="SESSION" />
      <setting name="jdbcTypeForNull" value="OTHER" />
      <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
     </settings>
     <typeAliases>
      <package name="com.domain.do" /><!-- 这个是自动的,也可以一个一个配 -->
     </typeAliases>
    </configuration>

  5. 修改spring,注入配置
    <bean id="guardianSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     <property name="dataSource" ref="dataSource" />
     <property name="configLocation" value="META-INF/configuration.xml" />
     <property name="mapperLocations" value="classpath*:META-INF/sqlmap/**/*.xml" />
    </bean>
    

Mapper注意事项:

遇到的问题:

  1. 进过实测,select如果不加入resultMap,除了id会被设置进去,对象的其他属性都会是null
  2. selectKey不设resultType的话会报no Map found的错误

转载:

  1. <sql> 这里的SQL语句, 切忌最后加 " ; " , 否则, 会出现 错误字符 </sql>
  2. mapper.xml 中的注释 <!-- -->(Y) , 而 <!--注释--注释-->(X)
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP