之前学习的mybatis都是采用xml方式进行sql的解析。
最近看了下使用annotation的方式进行数据库sql语句封装。
这里记录下使用annotation的方式使用动态sql。
基本来说他有两种方案进行封装。
第一种方式:采用select的方式,使用<script>进行拼接。
第二种方式:使用SelectProvider,然后在另外的方法中返回sql语句。然后进行。
一下是两种方案的操作:
代码简单,实现功能为:如果传入的用户有name,那么sql语句加入name like "%xxx%"
第一种方法:
@Select("<script>select * from t_user" +
"<where>" +
"<if test='#{name} != null'>name like concat('%',#{name},'%')</if>" +
"</where>" +
"</script>")
List<User> DynaSQL2(User u);
第二种方法:
@SelectProvider(type = com.duduli.li.sql.DynamicsSQL.class,method = "getLoginSQL")
List<User> DynaSQL(User u);
sql拼接方法:
package com.duduli.li.sql;
import com.duduli.li.domain.User;
import org.apache.ibatis.jdbc.SQL;
public class DynamicsSQL {
public String getLoginSQL(User u){
SQL sql = new SQL();
String name = u.getName();
sql.SELECT("*").FROM("t_user");
if(name != null){
sql.WHERE("name LIKE concat('%',concat(#{name},'%'))");
}
System.out.println(sql.toString());
return sql.toString();
}
}
测试代码:
User u = new User();
u.setName("xx");
List<User> list = userMapper.DynaSQL2(u);
// List<User> list = userMapper.DynaSQL(u);
for(User uu : list){
System.out.println(uu.toString());
}
分享到:
相关推荐
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
在MyBatis中,动态SQL使用的主要方式是通过使用XML或注解来编写SQL语句。下面我将简单介绍一下MyBatis动态SQL的使用方法和常用的功能。 1. if标签:if标签是动态SQL中最常用的功能之一。它允许我们根据条件判断是否...
java工程,练习通过MyBatis注解的方式配置SQL映射器,实现动态SQL.
主要介绍了Spring Boot整合mybatis使用注解实现动态Sql、参数传递等常用操作(实现方法),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这是一个测试,专门测试Mybatis的动态sql。里面包含了所有的动态sql的用法,全部用代码形式描述出来,并给与适当的注释。
上篇文章说过,mybatis在执行sql语句的时候,通过id获取configuration中mappedStatements的 MappedStatement对象,每个MappedStatement对象对应着增删改查语句,也就是我们配置文件中增删改查标签配置或是注解@...
这篇文章主要介绍了Mybatis中的动态SQL语句解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Mybatis中配置SQL有两种方式,一种是利用xml 方式进行配置,...
在做基于SSM框架时,因用的是全注解模式开发,在做些查询+分页工作时Mybatis注解并不能很好的进行sql编写,因而用到了这个java类,对实现了sql语句的拼接。
基于SQL注解的方式操作数据库,规避了创建映射文件
mybatis 注解+配置文件方式完整例子 包含数据库的sql文件. 所有方法都有注解, 很明了.不知道为啥这个所需积分竟然逐步增长了,描述文字也50起步了。。
MiniDao 是一款轻量级JAVA持久层框架,基于 ...SQL 支持注解方式。SQL 支持独立文件方式,SQL文件的命名规则: 类名_方法名; SQL文件更容易定位,方便后期维护,项目越大此优势越明显。SQL标签采用Freemarker的基本语法
mybatis-demo12-动态SQL语句2-基于注解配置.zip
动态 SQL: MyBatis 支持动态 SQL,可以在 SQL 语句中使用条件、循环和参数映射等。 结果映射: MyBatis 可以将 SQL 查询的结果直接映射到 Java 对象。 事务管理: MyBatis 提供了事务管理的功能,可以控制数据库事务的...
灵活性高:MyBatis支持动态SQL和存储过程,对于需要执行复杂查询的应用场景,提供了强大的动态SQL支持,使得查询条件可以根据需要进行灵活拼装,便于处理多变的查询需求。 性能高效:作为一个轻量级的框架,...
mybatis-generator 增强版,为实体类添加注释,mepper.xml只保留动态sql,sqlId生成规则为findByIdXXX、updaeXXX、deleteXXX。dao没修改多于的方法请自己删掉。(注意用targetRuntime="MyBatis3")
基于MyBatis注解的学生管理程序-ssm彻底掌握的练手项目 1.包含项目所有需要的离线jar junit-4.7 log4j-1.2.16 mybatis-3.2.2-sources mybatis-3.3.0 mysql-connector-java-5.1.0-bin mysql-connector-java-8.0.26 2....
java工程,练习通过MyBatis注解的方式配置SQL映射器,实现一对一关系.
主要给大家介绍了关于mybatis中注解映射SQL的相关资料,文中给出了详细的示例代码供大家参考学习,对大家的学习或者共组具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
此版本不仅整合了springboot和mybatis,更是通过自己封装,实现动态生成sql语句,对应的实体类service只需要继承一个类就能动态的生成自己的增删查改,大大简化了常见的操作
NULL 博文链接:https://dragonhunter.iteye.com/blog/1961148