Java代码里如何拼接SQL语句到mybatis的xml

关键语句:

StringBuilder whereSql = new StringBuilder();
whereSql.append("SQL");

实现类:

	public List getList(Map<String, Object> map) {
		List<Map<String, Object>> rs = new ArrayList<Map<String, Object>>();
		try {
			StringBuilder whereSql = new StringBuilder();

			if (map.get("userName").toString().length()>0) {
				whereSql.append(" AND a.userName in ('" + map.get("userName").toString().replaceAll(",", "\',\'") + "')");//不为空时加入查询条件
			}
			if (map.get("CURRENTPAGE").toString().length()>0 && map.get("PAGESIZE").toString().length()>0) {//前端有传分页参数时就添加分页查询条件
				int currenpage = Integer.parseInt(map.get("CURRENTPAGE").toString());
				int pagesize = Integer.parseInt(map.get("PAGESIZE").toString());
				currenpage = ((currenpage - 1) * pagesize);
				whereSql.append(" limit " + currenpage + "," + pagesize);
			}

			rs = wmTblWorkorderMapper.getList(whereSql.toString());
			return rs;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

mapper:

List<Map<String,Object>> getList(@Param("whereSql") String whereSql);

mapper对应的xml:

<select id="getList" resultType="HashMap">
 SELECT * FROM user a WHERE 1=1 ${whereSql}
</select>

mybatis中拼接sql语句的特殊符号表示

需要在mybatis中,使用到大于号,小于号等等拼接sql语句,一般有以下XML转义字符 :

XML转义字符 

&lt;                          <                        小于号 
&gt;                         >                        大于号 
&amp;                    &                           和 
&apos;                    '                         单引号 
&quot;                    "                         双引号

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MyBatis 动态拼接Sql字符串的问题

    MyBatis 的一个强大的特性之一通常是它的动态 SQL 能力.如果你有使用 JDBC 或其他 相似框架的经验,你就明白条件地串联 SQL 字符串在一起是多么的痛苦,确保不能忘了空格或在列表的最后省略逗号.动态 SQL 可以彻底处理这种痛苦. 动态SQL MyBatis的动态SQL,解决了SQL字符串拼接的痛苦. 1.if <select id="findActiveBlogWithTitleLike" parameterType="Blog" result

  • MyBatis的动态SQL语句实现

    1. 动态SQL之<if>标签 我们根据实体类的不同取值,使用不同的SQL语句来进行查询.比如在id如果不为空时可以根据id查询,如果username不为空时还要加入用户名作为条件,这种情况在我们的多条件组合查询中经常会碰到. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN&qu

  • 在Mybatis @Select注解中实现拼写动态sql

    现在随着mybatis plus的应用,越来越多的弱化了SQL语句,对于单表操作可以说几乎不需要进行自己编写SQL语句了,但对于多表查询操作目前mybatis plus还没有很好的支持,还需要自己编写SQL语句,如: import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.anno

  • MyBatis中动态sql的实现方法示例

    1. 动态sql 动态sql是mybatis中的一个核心,什么是动态sql? 动态sql即对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. MyBatis的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号.有些时候,SQL语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可

  • Java代码里如何拼接SQL语句到mybatis的xml

    关键语句: StringBuilder whereSql = new StringBuilder(); whereSql.append("SQL"); 实现类: public List getList(Map<String, Object> map) { List<Map<String, Object>> rs = new ArrayList<Map<String, Object>>(); try { StringBuilde

  • mybatis-plus 使用Condition拼接Sql语句各方法的用法

    mybatis-plus Condition拼接Sql语句各方法 1.setSqlSelect-用于添加查询的列信息 public Wrapper<T> setSqlSelect(String... columns) { StringBuilder builder = new StringBuilder(); String[] arr = columns; int len = columns.length; for(int i = 0; i$ < len; ++i$) { String

  • Java使用Statement接口执行SQL语句操作实例分析

    本文实例讲述了Java使用Statement接口执行SQL语句操作的方法.分享给大家供大家参考,具体如下: Statement执行SQL语句: 1. 对数据库的曾删改操作时,使用stmt.executeUpdate(sql)  执行给定 SQL 语句,分别为 insert .update.delete. 2. 对数据库做查询时,直接使用 stmt.executeQuery(sql),返回结果可以为一个resultSet结果集. 首先做一些准备工作: ①对要进行操作的数据库表进行封装,比如说我的数

  • C#拼接SQL语句 用ROW_NUMBER实现的高效分页排序

    如果项目中要用到数据库,铁定要用到分页排序.之前在做数据库查询优化的时候,通宵写了以下代码,来拼接分页排序的SQL语句 复制代码 代码如下: /// <summary> /// 单表(视图)获取分页SQL语句 /// </summary> /// <param name="tableName">表名或视图名</param> /// <param name="key">唯一键</param> //

  • java实现简单的给sql语句赋值的示例

    代码本身很简单.拼接sql的时候?不好数,简单的用来赋值. 复制代码 代码如下: /**  * TODO 循环赋值,缺少的类型可随时添加  * @author Lucius  * @param pt  * @param list  * @throws SQLException  */ public static void setParam(PreparedStatement pt, List list) throws SQLException{  for(int i = 0;i<list.siz

  • 别在Java代码里乱打日志了,这才是正确的打日志姿势

    使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一. 实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的. 当你碰到if-else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式: lo

  • java执行SQL语句实现查询的通用方法详解

    完成SQL查询 并将查询结果放入Vector容器,以便其他程序使用 /* * 执行sql查询语句 */ public static <T> Vector<T> executeQuery(Class<T> clazz, String sql, Object... args) { Connection conn = null; PreparedStatement preparedstatement = null; ResultSet rs = null; Vector<

  • Mybatis注解方式完成输入参数为list的SQL语句拼接方式

    目录 Mybatis注解完成输入参数为list的SQL语句拼接 拼接查询条件为list集合的sql函数 Mybatis注解完成输入参数为list的SQL语句拼接 首先将list集合拼接成一个"1,2,3,4"格式的字符串 然后将这个字符串封装到一个类中:TyreInfoIdStr 这里的@SelectProvider是调用一个外部的类的方法的返回值作为sql语句. 在这个方法中拼接SQL语句与list集合的字符串,我这里是提前拼接过了. 拼接查询条件为list集合的sql函数 当dep

  • Mybatis超级强大的动态SQL语句大全

    目录 1. If 语句 2. Where语句 2.1 和 where 元素等价的自定义 trim 元素 3. Set语句 3.1 与 set 元素等价的自定义 trim 元素 4. Choose语句 5. Foreach语句 6. SQL片段 7. Bind元素 附:MyBatis配置动态SQL语句 总结 1. If 语句 需求:根据作者名字和博客名字来查询博客!如果作者名字为空,那么只根据博客名字查询,反之,则根据作者名来查询 <!--需求1: 根据作者名字和博客名字来查询博客! 如果作者名字

  • Mybatis如何实现@Select等注解动态组合SQL语句

    目录 一.背景说明 二.实现方案 三. 实现自定义注解 1.自定义Select注解 2.自定义Select in注解 3.自定义Update的注解 4.自定义Insert的注解 同理 四.注意事项&遇到的一些坑 五.总结 一.背景说明 由于以前在项目中一直使用sqlmap.xml进行mybatis语句的编写和实现,其xml实现动态更新和查询较为方便,而目前由于技术框架所定,采用@Select.@Insert等注解方式来实现对应的持久化操作(MyBatis提供了简单的Java注解,使得我们可以不配

随机推荐