MyBatis框架

第4章 MyBatis 映射文件

4.1 Mybatis映射文件简介

  • MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。
  • SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):

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

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

resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加                                            载对象。

parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能                                                    在将来被移除,这里不会记录。

sql – 可被其他语句引用的可重用语句块。

insert – 映射插入语句

update – 映射更新语句

delete – 映射删除语句

         select – 映射查询语

4.2 Mybatis使用insert|update|delete|select完成CRUD

       4.2.1    select

  • Mapper接口方法

public Employee getEmployeeById(Integer id );

  • Mapper映射文件

<select id="getEmployeeById"

          resultType="com.atguigu.mybatis.beans.Employee"

          databaseId="mysql">

                    select * from tbl_employee where id = ${_parameter}

</select>

       4.2.2    insert

  • Mapper接口方法

public Integer  insertEmployee(Employee employee);

 

  • Mapper映射文件

<insert id="insertEmployee"

                   parameterType="com.atguigu.mybatis.beans.Employee" 

                            databaseId="mysql">

                   insert into tbl_employee(last_name,email,gender) values(#{lastName},#{email},#{gender})

</insert>

 

       4.2.3  update

  • Mapper接口方法

public Boolean  updateEmployee(Employee employee);

 

  • Mapper映射文件

<update id="updateEmployee" >

                   update tbl_employee set last_name = #{lastName},

                                                                     email = #{email},

                                                                     gender = #{gender}

                                                                     where id = #{id}

</update>

 

       4.2.4  delete

  • Mapper接口方法

public void  deleteEmployeeById(Integer id );

  • Mapper映射文件

<delete id="deleteEmployeeById" >

                   delete from tbl_employee where id = #{id}

</delete>

 

4.3         主键生成方式、获取主键值

       4.3.1    主键生成方式

  • 支持主键自增,例如MySQL数据库
  • 不支持主键自增,例如Oracle数据库

       4.3.2 获取主键值

  • 若数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),则可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置到目标属性上。

<insert id="insertEmployee"          parameterType="com.atguigu.mybatis.beans.Employee" 

                            databaseId="mysql"

                            useGeneratedKeys="true"

                            keyProperty="id">

                   insert into tbl_employee(last_name,email,gender) values(#{lastName},#{email},#{gender})

</insert>

 

4.4 参数传递

       4.4.1 参数传递的方式

  • 单个参数

         可以接受基本类型,对象类型。这种情况MyBatis可直接使用这个参数,不需要经过任 何处理。

  • 多个参数

任意多个参数,都会被MyBatis重新包装成一个Map传入。Map的key是param1,param2,或者0,1…,值就是参数的值

  • 命名参数

为参数使用@Param起一个名字,MyBatis就会将这些参数封装进map中,key就是我们自己指定的名字

  • POJO

当这些参数属于我们业务POJO时,我们直接传递POJO

  • Map

我们也可以封装多个参数为map,直接传递

  • Collection/Array

会被MyBatis封装成一个map传入, Collection对应的key是collection,Array对应的key是array. 如果确定是List集合,key还可以是list.