第二章SQL映射文件

第二章SQL映射文件

SQL映射文件的几个顶级元素(按照定义的顺序)

mapper - namespace

cache - 配置给定命名空间的缓存

cache-ref – 从其他命名空间引用缓存配置

resultMap –用来描述数据库结果集和对象的对应关系

sql – 可以重用的SQL块,也可以被其他语句引用

insert – 映射插入语句

update – 映射更新语句

delete – 映射删除语句

select – 映射查询语句

1.mapper

namespace:命名空间

namespace和子元素的id联合保证唯一,区别不同的mapper

绑定DAO接口

namespace的命名必须跟某个接口同名

接口中的方法与映射文件中SQL语句id一一对应

2.select语句有很多属性可以详细配置每一条语句

id

命名空间中唯一的标识符

接口中的方法与映射文件中的SQL语句id一一对应

parameterType

传入SQL语句的参数类型

resultType

SQL语句返回值类型的完整类名或别名

3.parameterType

基础数据类型

intStringDate

只能传入一个,通过#{参数名}即可获取传入的值

复杂数据类型

Java实体类、Map

通过#{属性名}或者#{mapkeyName}即可获取传入值

4.resultType :直接表示返回类型

基本数据类型

复杂数据类型

resultMap :对外部resultMap的引用

应用场景:

数据库字段信息与对象属性不一致

复杂的联合查询,自由控制映射结果

resultMap自动映射匹配前提:字段名与属性名一致

二者不能同时存在,本质上都是Map数据结构

5.

<insert  id="add" parameterType="User" >

 insert into  smbms_user (userCode,userName,userPassword)

values ( #{userCode},#{userName},#{userPassword})

</insert>

<update id ="modify" parameterType="User">

update smbms_user set userCode = #{userCode},

         userName = #{userName},

              userPassword = #{userPassword}  where id = #{id}

</update>

<delete id ="deleteUserById" parameterType="int">

delete from smbms_user where id = #{id}

</delete>

<select id="getUserList" resultMap="userList" parameterType="User">

select u.*,r.roleName from smbms_user u,smbms_role r

where u.userName like CONCAT (‘%’,#{userName}, ‘%’)  

and u.userRole = #{userRole} and u.userRole = r.id

</select>

 

6.DAO层接口方法常见的返回类型

Java对象、MapList等复杂数据类型

int

(增删改)更新操作时,影响的数据行数

MyBatis参数入参

@Param注解参数

封装成对象入参

7.resultMap属性

id

resultMap的唯一标识

type

Java实体类

resultMap子元素

id

一般对应数据库中该行的主键id,设置此项可提高MyBatis性能

result

映射到JavaBean的某个简单类型属性

Association 一对一

映射到JavaBean的某个复杂类型属性,比如JavaBean

Collection 一对多

映射到JavaBean的某个复杂类型属性,比如集合

association

    复杂的类型关联,一对一

   内部嵌套 映射一个嵌套JavaBean属性

属性

    property:映射数据库列的实体对象的属性

   javaType:完整Java类名或者别名

   resultMap:引用外部resultMap

子元素

id

result

   property:映射数据库列的实体对象的属性

   column:数据库列名或者别名

collection

复杂类型集合,一对多

内部嵌套

   映射一个嵌套结果集到一个列表

属性

   property:映射数据库列的实体对象的属性

   ofType:完整Java类名或者别名(集合所包括的类型)

   resultMap:引用外部resultMap

子元素

id

result

   property:映射数据库列的实体对象的属性

   column:数据库列名或者别名

原文地址:https://www.cnblogs.com/yaoyao9/p/13790668.html