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 >= #{id, jdbcType=BIGINT} </if> <if test="id != null"><!-- 小于号(<) --> AND T.ID <= #{id, jdbcType=BIGINT} </if> ... </where>
常用转义字符如下:
显示结果 |
描述 |
实体名称 |
实体编号 |
|
空格 |
|
  |
< |
小于号 |
< |
< |
> |
大于号 |
> |
> |
& |
和号 |
& |
& |
" |
引号 |
" |
" |
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 是一个轻量级的数据持久层框架,它的主要功能是管理项目的SQL语句执行,从而实现数据的CRUD(创建、读取、更新、删除)操作。与Hibernate这样的ORM(对象关系映射)框架相比,MyBatis 更注重SQL的编写自由度...
在本项目"Demo_springboot_ES_mybatis操作es_DEMO_mybatis"中,我们将探讨如何集成SpringBoot、MyBatis以及Elasticsearch(ES)框架,以实现对ES数据库的基本操作。SpringBoot以其便捷的配置和强大的依赖管理,极大...
总之,"MyBatis常用项目范例"是一个全面的学习资源,涵盖了MyBatis基础操作和进阶应用,对于想要提升MyBatis技能的开发者来说极具价值。通过研究这些范例,你可以深入理解MyBatis的工作原理,从而更高效地开发和维护...
4. **查询操作(Select)**:查询是最常见的操作,MyBatis提供了灵活的查询方式。可以定义`<select>`标签,通过传入参数来动态构建SQL。同时,MyBatis支持结果映射,将查询结果自动转化为Java对象。可以使用单表查询...
在MyBatis这个强大的持久层框架中,处理日期时间是常见的操作之一。本文将通过实例分析,探讨在MyBatis中如何有效地操作日期,包括插入、查询和更新等操作。我们将从以下几个方面来深入理解这一主题: 1. **日期...
MyBatis-Plus(简称MP)是一个为MyBatis做拓展的工具,它简化了常见的数据操作,如插入、删除、更新和查询。MP提供了CRUD操作的便捷方法,支持主键自动生成、条件构造器、关联查询等功能,使得开发者无需编写大量...
MyBatis Plus 是 MyBatis 的一个扩展,它在 MyBatis 的基础上提供了更多的便捷功能,包括但不限于批量操作。在数据库交互中,批量操作能够显著提高效率,减少数据库连接的开销。本测试主要探讨了 MyBatis Plus 中的...
### MyBatis常见实用面试题知识点详解 #### 1、什么是MyBatis? - **定义**:MyBatis是一个开源的持久层框架,允许开发者通过简单的XML或注解方式进行SQL语句的定制、存储过程的编写及结果集的高级映射。 #### 2...
Mybatis是Java开发中常用的持久层框架,它简化了数据访问层的操作,通过XML或注解方式配置SQL语句,提供了动态SQL的功能。面试中,Mybatis相关的问题常常被用来评估候选人在数据库交互和ORM(对象关系映射)方面的...
Mybatis-plus支持主键生成策略、 CRUD操作、逻辑删除、自动填充、分页插件等功能。 在Mybatis-plus中,实体类需要使用@TableId注解来标记主键ID,@TableField注解用来标记其他字段。大多数时候不需要使用@...
mybatis-3.2.7.jar source code API configuration.xml settings defaultStatementTimeout 的设置 MyBatisDemo 常用例子 使用3种方法,编写mapper,操作数据库
2. **读取(READ)**: 查询操作是最常见的,MyBatis支持单个记录查询和集合查询。可以在XML文件中编写SELECT语句,返回单个对象或List对象。在Java代码中,可以通过`SqlSession.selectOne()`或`SqlSession.select...
MybatisX是一款针对IntelliJ IDEA的高效Mybatis开发插件,它的主要目的是为了提高开发者的生产力,通过简化常见的Mybatis操作,如生成Mapper接口、XML配置文件以及Service层代码等,来加速项目的开发进程。...
在Java开发领域,Spring框架和MyBatis框架的整合是常见的数据访问技术组合。Spring作为一个全面的开源应用框架,提供依赖注入(DI)和面向切面编程(AOP)等功能,而MyBatis则是一个轻量级的持久层框架,专注于SQL...
MyBatis和MyBatis-Spring是两个在Java开发中常用的框架,主要用于简化数据库操作和实现Spring框架的无缝集成。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和...
以上是Mybatis的基本知识点,这份文档详细介绍了Mybatis的各个方面,包括使用方法、最佳实践以及常见问题的解决方案,对于理解和应用Mybatis有着极大的帮助。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。
- **一键生成CRUD**:通过简单的操作,MyBatisX可以快速生成完整的增删改查操作,减轻开发工作量。 4. **使用技巧** - **自定义配置**:MyBatisX允许用户根据项目需求进行个性化配置,例如设置默认的数据库表前缀...
MyBatis与Spring框架的整合也是常见用法之一,通过整合,可以利用Spring的依赖注入等特性来简化MyBatis的应用。 逆向工程是MyBatis的另一项特性,它允许从数据库表自动生成实体类、映射文件以及Mapper接口,大大...
### Mybatis常见知识点 #### Mybatis优点 - **消除了JDBC硬编码的方式**:在传统的JDBC编程中,数据库连接、SQL语句以及结果集处理等操作通常都是通过硬编码实现的,这种方式不仅增加了代码的冗余度,还降低了程序...
8. **最佳实践**:提供使用Mybatis插件的最佳实践和注意事项,避免常见的错误和陷阱。 由于压缩包内提到的"赚钱项目"与Mybatis插件教程的主题关联性不强,我们无法直接从这个信息推断出具体的知识点。然而,如果这...