`
tom_seed
  • 浏览: 322170 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MyBatis常用的操作

 
阅读更多

1.在<where>标签中为保证某一条件为true,且不影响其他判断条件。最简单的解决方式:

<where>
  <if test="true">
	GMT_MODIFY = now()
  </if>
</where>
或者
<where>
  <if test="1==1">
	GMT_MODIFY = now()
  </if>
</where>

 

2.Oracle、MySQL插入时返回主键的操作

Oracle:
<insert id="insert" parameterClass="Cont">
	<selectKey keyProperty="id" resultClass="java.lang.Long" type="pre">
		SELECT SEQ_CONT.NEXTVAL AS ID FROM DUAL
    </selectKey>
	insert into CONT(ID, NAME, GMT_CREATE, GMT_MODIFY) values (#{id}, #{name}, sysdate, sysdate)
</insert>
注意:这边的keyProperty="id"中"id"指的是Java对象Cont中的属性,而并非数据库中CONT表的属性。

 

MySQL:
<insert id="insert" parameterType="Role" useGeneratedKeys="true" keyProperty="roleId">
    insert into role (name, create_time, update_time) values (#{name,jdbcType=VARCHAR}, now(), now())
</insert>
注意:role表的role_id字段是自动增长的,所以插入时不需要传入值;keyProperty="roleId"中"roleId"指的是Java对象Role中的属性,而并非数据库中role表的属性。

 

3.插入、修改时存储创建、修改时间为数据库时间

Oracle:
insert into CONT(ID, NAME, GMT_CREATE, GMT_MODIFY) values (#{id}, #{name}, sysdate, sysdate)

MySQL:
insert into role (name, create_time, update_time) values (#{name,jdbcType=VARCHAR}, now(), now())

 

4.关系运算符的处理及转义

主要处理的是小于/小于等于符号(”<“/”<=“)与XML的尖括号”<“之间的冲突。可以用以下代码解决:

<where>
	<if test="id != null">
		<![CDATA[ AND T.ID < #{id} ]]>
	</if>
	...
</where>
包含在<![CDATA[      ]]>之间即可避免

 或者直接进行转义

<where>
	<if test="id != null"><!-- 大于号(>) -->
		AND T.ID &gt;= #{id, jdbcType=BIGINT}
	</if>
	<if test="id != null"><!-- 小于号(<) -->
		AND T.ID &lt;= #{id, jdbcType=BIGINT}
	</if>
	...
</where>

 常用转义字符如下:

显示结果

描述

实体名称

实体编号

 

空格

&nbsp;

&#160;

<

小于号

&lt;

&#60;

>

大于号

&gt;

&#62;

&

和号

&amp;

&#38;

"

引号

&quot;

&#34;

 

5.批量插入、修改、删除操作

<!-- MySQL批量插入 -->
<insert id="insertBatch" parameterType="java.util.List">
  insert into role_authority (role_id, authority_id) values
  <foreach collection="list" item="item" index="index" separator=",">
  	(${item.roleId}, ${item.authorityId})
  </foreach>
</insert>

<!-- MySQL、Oracle通过主键集合批量删除记录 -->
<delete id="batchRemove" parameterType="java.util.List">
  DELETE FROM ld_user WHERE id IN
  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
     #{item}
  </foreach>
</delete>

<!-- 批量修改与批量删除类似 -->

注意:SQL的执行长度有限制,需要注意不能超长

 

6.模糊查询:

<if test="entName != null and entName != ''">
	AND t2.`name` LIKE "%"#{entName,jdbcType=VARCHAR}"%"
	<!-- '%${entName,jdbcType=VARCHAR}%' -->
</if>
或者
<if test="voucherName != null">
	AND voucher_name = CONCAT('%',#{voucherName,jdbcType=VARCHAR},'%')
</if>
分享到:
评论

相关推荐

    mybatis常用操作-curd操作

    MyBatis 是一个轻量级的数据持久层框架,它的主要功能是管理项目的SQL语句执行,从而实现数据的CRUD(创建、读取、更新、删除)操作。与Hibernate这样的ORM(对象关系映射)框架相比,MyBatis 更注重SQL的编写自由度...

    demo_springboot_ES_mybatis操作es_DEMO_mybatis_

    在本项目"Demo_springboot_ES_mybatis操作es_DEMO_mybatis"中,我们将探讨如何集成SpringBoot、MyBatis以及Elasticsearch(ES)框架,以实现对ES数据库的基本操作。SpringBoot以其便捷的配置和强大的依赖管理,极大...

    MyBatis常用项目范例

    总之,"MyBatis常用项目范例"是一个全面的学习资源,涵盖了MyBatis基础操作和进阶应用,对于想要提升MyBatis技能的开发者来说极具价值。通过研究这些范例,你可以深入理解MyBatis的工作原理,从而更高效地开发和维护...

    mybatis数据操作(增删改查+批量操作)

    4. **查询操作(Select)**:查询是最常见的操作,MyBatis提供了灵活的查询方式。可以定义`&lt;select&gt;`标签,通过传入参数来动态构建SQL。同时,MyBatis支持结果映射,将查询结果自动转化为Java对象。可以使用单表查询...

    mybatis中操作日期实例分析

    在MyBatis这个强大的持久层框架中,处理日期时间是常见的操作之一。本文将通过实例分析,探讨在MyBatis中如何有效地操作日期,包括插入、查询和更新等操作。我们将从以下几个方面来深入理解这一主题: 1. **日期...

    mybatis-plus IDEA常用插件

    MyBatis-Plus(简称MP)是一个为MyBatis做拓展的工具,它简化了常见的数据操作,如插入、删除、更新和查询。MP提供了CRUD操作的便捷方法,支持主键自动生成、条件构造器、关联查询等功能,使得开发者无需编写大量...

    mybatis plus 5种批量操作性能测试

    MyBatis Plus 是 MyBatis 的一个扩展,它在 MyBatis 的基础上提供了更多的便捷功能,包括但不限于批量操作。在数据库交互中,批量操作能够显著提高效率,减少数据库连接的开销。本测试主要探讨了 MyBatis Plus 中的...

    MyBatis常见实用面试题整理.docx

    ### MyBatis常见实用面试题知识点详解 #### 1、什么是MyBatis? - **定义**:MyBatis是一个开源的持久层框架,允许开发者通过简单的XML或注解方式进行SQL语句的定制、存储过程的编写及结果集的高级映射。 #### 2...

    Mybatis常见面试题

    Mybatis是Java开发中常用的持久层框架,它简化了数据访问层的操作,通过XML或注解方式配置SQL语句,提供了动态SQL的功能。面试中,Mybatis相关的问题常常被用来评估候选人在数据库交互和ORM(对象关系映射)方面的...

    Mybatis-plus相关操作.pdf

    Mybatis-plus支持主键生成策略、 CRUD操作、逻辑删除、自动填充、分页插件等功能。 在Mybatis-plus中,实体类需要使用@TableId注解来标记主键ID,@TableField注解用来标记其他字段。大多数时候不需要使用@...

    mybatis-3.2.7.jar-lib-source code API settings Timeout MyBatisDemo 常用例子

    mybatis-3.2.7.jar source code API configuration.xml settings defaultStatementTimeout 的设置 MyBatisDemo 常用例子 使用3种方法,编写mapper,操作数据库

    MyBatisDemo

    2. **读取(READ)**: 查询操作是最常见的,MyBatis支持单个记录查询和集合查询。可以在XML文件中编写SELECT语句,返回单个对象或List对象。在Java代码中,可以通过`SqlSession.selectOne()`或`SqlSession.select...

    MybatisX idea 快速开发插件jar

    MybatisX是一款针对IntelliJ IDEA的高效Mybatis开发插件,它的主要目的是为了提高开发者的生产力,通过简化常见的Mybatis操作,如生成Mapper接口、XML配置文件以及Service层代码等,来加速项目的开发进程。...

    spring_mybatis 整合jar包

    在Java开发领域,Spring框架和MyBatis框架的整合是常见的数据访问技术组合。Spring作为一个全面的开源应用框架,提供依赖注入(DI)和面向切面编程(AOP)等功能,而MyBatis则是一个轻量级的持久层框架,专注于SQL...

    mybatis,mybatis-spring

    MyBatis和MyBatis-Spring是两个在Java开发中常用的框架,主要用于简化数据库操作和实现Spring框架的无缝集成。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和...

    Mybatis文档(中英)

    以上是Mybatis的基本知识点,这份文档详细介绍了Mybatis的各个方面,包括使用方法、最佳实践以及常见问题的解决方案,对于理解和应用Mybatis有着极大的帮助。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。

    MyBatisX 插件离线安装包

    - **一键生成CRUD**:通过简单的操作,MyBatisX可以快速生成完整的增删改查操作,减轻开发工作量。 4. **使用技巧** - **自定义配置**:MyBatisX允许用户根据项目需求进行个性化配置,例如设置默认的数据库表前缀...

    Mybatis课件

    MyBatis与Spring框架的整合也是常见用法之一,通过整合,可以利用Spring的依赖注入等特性来简化MyBatis的应用。 逆向工程是MyBatis的另一项特性,它允许从数据库表自动生成实体类、映射文件以及Mapper接口,大大...

    Mybatis常见知识点.md

    ### Mybatis常见知识点 #### Mybatis优点 - **消除了JDBC硬编码的方式**:在传统的JDBC编程中,数据库连接、SQL语句以及结果集处理等操作通常都是通过硬编码实现的,这种方式不仅增加了代码的冗余度,还降低了程序...

    Mybatis系列教程Mybatis插件共8页.pdf.z

    8. **最佳实践**:提供使用Mybatis插件的最佳实践和注意事项,避免常见的错误和陷阱。 由于压缩包内提到的"赚钱项目"与Mybatis插件教程的主题关联性不强,我们无法直接从这个信息推断出具体的知识点。然而,如果这...

Global site tag (gtag.js) - Google Analytics