首页 > 代码库 > MyBatis学习-映射文件标签篇
MyBatis学习-映射文件标签篇
MyBatis 真正的核心在映射文件中。比直接使用 JDBC 节省95%的代码。而且将 SQL 语句独立在 Java 代码之外,可以进行更为细致的 SQL 优化。
一、 映射文件的顶级元素
- resultMap:最复杂,最有力量的元素,用来描述如何从数据库结果集中加载你的对象
- sql:可以重用的 sql 代码块
- insert:映射插入语句
- update:映射更新语句
- delete:映射删除语句
- select:映射查询语句
- cache:配置给定命名空间的缓存
- cache-ref:从其他命名空间引用缓存配置
二、select 标签的属性信息
<select id="selectUser" parapeterType="int" resultType="hashmap" resultMap="USER_RESULT_MAP" flushCache="false" useCache="true" timeout="10000" fetchSize="256" statementType="PREPARED" resultSetType="FORWORD_ONLY" ></select>
- id:在当前命名空间中的唯一标识符
- paramerType:将会传入这条 sql 语句的参数类的完全限定名或别名
- resultType:从这条 sql 语句中返回的期望类型的类的完全限定名或别名。
- resultMap:设置返回集合中的元素的完全限定名或别名
- flushCache:将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认为false
- useCache:设置为true,将会导致本条语句的结果被缓存。默认为true。
- timeout:设置驱动程序等待数据库返回请求结果,并抛出异常事件的最大等待值。默认不设置
- fetchSize:暗示驱动程序每次批量返回的结果行数。默认不设置
- statementType:STATEMENT、PREPARED或CALLABLE的一种,这会让MyBatis使用选择Statement、PreparedStatement或
- CallableStatement。默认值:PREPARED
- resultSetType:设置游标FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认不设置
三、insert 标签的属性信息
<insert id="insertProject" paramterType="projectInfo" useGeneratedKeys="true" keyProperty="projectId" >
- useGeneratedKeys:设置为 true,并将 keyProperty 属性设为数据库主键对应的实体对象属性名称
- keyProperty:与上面的配置相配合,用于获取数据库自动生成的主键
四、重用 sql 标签
<sql id="userColumns">id,username,password</sql>
这个 SQL 片段可以被包含在其他语句中,eg:
<select id="selectProjectList" paramertType="int" resultType="hashmap"> SELECT <include refid="userColumns"/> FROM t_project_002_project_info </select>
五、完全限定名使用别名替代
在 mybatis 配置文件中,使用如下配置
<typeAliases> <typeAlias type="com.enh.bean.ProjectInfo" alias="projectInfo"/> </typeAliases>
那么在 Mapper 中,可以直接使用 projectInfo,即表示 com.enh.bean.ProjectInfo
六、命名空间
每个sql映射文件的要元素中,都需要指定一个名称空间,用以确保每个映射语句的id属性不会重复。如
<mapper namespace="com.enh.mapper.PersonMapper">
在Java代码中引用某个 sql 映射时,使用的亦是含有名称空间的全路径。如
session.update("com.enh.mapper.PersonMapper.udpateUser", user);
MyBatis学习-映射文件标签篇
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。