《二》mybatis写法

**1.select ** :主要看前面几个常用参数即可

  
  • id :在这个模式下唯一的标识符,可被其它语句引用
  • parameterType:传给此语句的参数的完整类名或别名
  • resultType:语句返回值类型的整类名或别名。注意,如果是集合,那么这里填写的是集合的项的整类名或别名,而不是集合本身的类名。(resultType 与resultMap 不能并用)
  • resultMap:引用的外部resultMap 名。结果集映射是MyBatis 中最强大的特性。许多复杂的映射都可以轻松解决。(resultType 与resultMap 不能并用)
  • 其他:flushCache,useCache,timeout,fetchSize,statementType,resultSetTypes

2.update

基本的语法 与 select类似。
支持批量更新--用到了动态sql :foreach

3.insert

  
    INSERT INTO USER (ID,  
                      NAME,  
                      SEX,  
                      AGE)  
          VALUES   (#{UID},  
                     #{UName},  
                     #{USex},  
                     #{UAGE})  
  
  • useGeneratedKeys 生成主键策略
  • keyProperty :标识一个将要被MyBatis设置进getGeneratedKeys的key 所返回的值,或者为insert 语句使用一个selectKey子元素。

支持批量插入
用到了动态sql :foreach

4.delete

省略
可以批量删除。

5.sql
Sql元素用来定义一个可以复用的SQL 语句段,供其它语句调用。

  
  
    SSELECT UT.ID,  
           UT.NAME,  
           UT.SEX,  
           UT.AGE  
      FROM USER UT  
  

复用:

  

6.参数
MyBatis可以使用Java的基本数据类型和Java的复杂数据类型。如:基本数据类型,String,int,date等。

使用基本数据类型,只能提供一个参数,所以需要使用Java实体类,或Map类型做参数类型。通过#{}可以直接得到其属性。

**传入多参数 **

public List getStudentListWhereParam(@Param(value = "name") String name, @Param(value = "sex") String sex, @Param(value = "birthday") Date birthdar, @Param(value = "classEntity") ClassEntity classEntity);  

默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义。 #{}比${}安全。

别名

 
 

7.动态的sql

Mybatis强大特性之一就是它的动态sql,免除了拼接sql带来的各种麻烦。

  • if 条件 :多条件组合

    sql语句


    update CATEGORY t SET
    
            t.CATEGORY_NAME = #{categoryName, jdbcType=VARCHAR},
    
    
            t.UPDATE_USER = #{updateUser, jdbcType=VARCHAR},
    
    t.UPDATE_TIME = currentTimeStamp
    WHERE t.CATEGORY_ID = #{categoryId, jdbcType=NUMERIC}

  • choose(when, otherwise) :类似于 switch 吧,满足其一就可以啦

    
      语句
      语句
      ……
      语句
    
    
  • where trim set

为了避免if动态条件不成立

条件写在 里面 或者 where条件加上1=1的条件


      ... 


      ...

  • foreach

必要操作是迭代一个集合, 通常是构建在IN条件中的。

指定的是list,有()和分隔符


    #{productIdList}

  • bind

bind元素允许你在自定义变量(不用符合OGNL规范),并且应用到上下文中


参考:

MyBatis常用SQL语句整理笔记
mybatis——select、insert、update、delete
Mybatis 3.1中 Mapper XML 文件 的学习详解
MyBatis动态SQL语法

你可能感兴趣的:(《二》mybatis写法)