开始配置Mapper了(基于mybatis-spring 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>
- resultMap在mybatis貌似不用定义,mybatis有强大的自动mapper机制,除非有列名和属性名称对不上的,而这一点ibatis是不是这样我也不知道
- mybatis全面放弃原来的标签式说明,转向表达式了(el?)http://www.mybatis.org/core/dynamic-sql.html
- 给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>
- 修改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注意事项:
遇到的问题:
- 进过实测,select如果不加入resultMap,除了id会被设置进去,对象的其他属性都会是null
- selectKey不设resultType的话会报no Map found的错误
转载:
- <sql> 这里的SQL语句, 切忌最后加 " ; " , 否则, 会出现 错误字符 </sql>
- mapper.xml 中的注释 <!-- -->(Y) , 而 <!--注释--注释-->(X)

本文对比了MyBatis与iBatis在配置方面的不同之处,包括XML映射文件的结构、命名空间的定义方式等,并介绍了MyBatis的一些高级特性如自动映射机制。

被折叠的 条评论
为什么被折叠?



