mybatis常用操作数据库知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis常用操作数据库知识相关的知识,希望对你有一定的参考价值。

  •  mybatis生成uuid        
<insert id="insert" parameterType="自定义的属性类名">
<selectKey keyProperty="userId//你的主键属性名" resultType="String" order="BEFORE">
  select replace(uuid(),-,‘‘) from dual //原样照抄
</selectKey>
  insert into sys_user (user_id, user_name, login_name,
    user_pwd)
values (#{userId,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR},
  #{loginName,jdbcType=VARCHAR},
  #{userPwd,jdbcType=VARCHAR})
</insert>
  •  select

           

<insert id="addBean" parameterType="com.test.bean.ScenicPunish">
       <!--生成uuid  -->
      <selectKey keyProperty="punish_id" resultType="java.lang.String" order="BEFORE">
        select replace(uuid(),-,‘‘) from dual
      </selectKey>
      insert into t_scenic_punish(punish_id,punish_prov,punish_city,punish_country,punish_scenic,punish_org,
         punish_type,punish_date,punish_title,punish_content,punish_url)
      values(#{punish_id},#{punish_prov},#{punish_city},#{punish_country},#{punish_scenic},#{punish_org},#{punish_type},#{punish_date},#{punish_title},#{punish_content},#{punish_url})
  </insert>

select 语句属性配置细节:
属性描述取值默认
id 在这个模式下唯一的标识符,可被其它语句引用    
parameterType 传给此语句的参数的完整类名或别名    
resultType 语句返回值类型的整类名或别名。注意,如果是集合,那么这里填写的是集合的项的整类名或别名,而不是集合本身的类名。(resultType 与resultMap 不能并用)    
resultMap 引用的外部resultMap 名。结果集映射是MyBatis 中最强大的特性。许多复杂的映射都可以轻松解决。(resultType 与resultMap 不能并用)    
flushCache 如果设为true,则会在每次语句调用的时候就会清空缓存。select 语句默认设为false true/false false
useCache 如果设为true,则语句的结果集将被缓存。select 语句默认设为false true/false false
timeout 设置驱动器在抛出异常前等待回应的最长时间,默认为不设值,由驱动器自己决定 正整数 未设置
fetchSize 设置一个值后,驱动器会在结果集数目达到此数值后,激发返回,默认为不设值,由驱动器自己决定 正整数 驱动器决定
statementType statement,preparedstatement,callablestatement。预准备语句、可调用语句 STATEMENT、PREPARED、CALLABLE PREPARED
resultSetType forward_only、scroll_sensitive、scroll_insensitive 只转发,滚动敏感,不区分大小写的滚动 FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE 驱动器决定
insert可以使用数据库支持的自动生成主键策略,设置useGeneratedKeys=”true”,然后把keyProperty 设成对应的列,就搞定了。比如说上面的StudentEntity 使用auto-generated 为id 列生成主键.
也可以在数据库中定义自动更新。
或者使用uuid进行更新id值


<!-- 插入学生 自动主键--> <insert id="insertStudentAutoKey" parameterType="StudentEntity"> <selectKey keyProperty="studentID" resultType="String" order="BEFORE"> select nextval(‘student‘) </selectKey> INSERT INTO STUDENT_TBL (STUDENT_ID, STUDENT_NAME, STUDENT_SEX, STUDENT_BIRTHDAY, CLASS_ID) VALUES (#{studentID}, #{studentName}, #{studentSex}, #{studentBirthday}, #{classEntity.classID}) </insert>


    
  • insert

       <insert id="insertStudent" parameterType="StudentEntity" useGeneratedKeys="true" keyProperty="studentID">

 

           

id 在这个模式下唯一的标识符,可被其它语句引用    
parameterType 传给此语句的参数的完整类名或别名    
flushCache 如果设为true,则会在每次语句调用的时候就会清空缓存。select 语句默认设为false true/false false
useCache 如果设为true,则语句的结果集将被缓存。select 语句默认设为false true/false false
timeout 设置驱动器在抛出异常前等待回应的最长时间,默认为不设值,由驱动器自己决定 正整数 未设置
fetchSize 设置一个值后,驱动器会在结果集数目达到此数值后,激发返回,默认为不设值,由驱动器自己决定 正整数 驱动器决定
statementType statement、preparedstatement、callablestatement。预准备语句、可调用语句 STATEMENT、PREPARED、CALLABLE PREPARED
useGeneratedKeys 告诉MyBatis 使用JDBC 的getGeneratedKeys 方法来获取数据库自己生成的主键(mysql、SQLSERVER 等关系型数据库会有自动生成的字段)。默认:false true/false false
keyProperty 标识一个将要被MyBatis设置进getGeneratedKeys的key 所返回的值,或者为insert 语句使用一个selectKey子元素。    

selectKey语句属性配置细节:

 












以上是关于mybatis常用操作数据库知识的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis从入门到精通—MyBatis基础知识和快速入门

6.mybatis里面的动态sql是怎么设定的,常用标签有那些以及其

android小知识点代码片段

MyBatis常用操作示例

Mybatis:Mybatis注解开发单表操作(代码实例)

MyBatis开发重点知识