`
Franciswmf
  • 浏览: 796894 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mybatis直接执行前台传递的sql语句(mapper参数即为sql字符串)

 
阅读更多
1、dao.java
 public List<Map<String, Object>> selectPublicItemList(@Param(value="sqlStr") String sqlStr);


2、mapper.xml
<select id="selectPublicItemList" parameterType="String" resultType="java.util.Map">
	${sqlStr}
	</select>


3、controller.java
  @RequestMapping(value="/getPublicOptionItemList", method = RequestMethod.GET)
	  @ResponseBody
	  public Map<String, Object> getPublicOptionItemList(@RequestParam(required=true,value="sqlStr")String sqlStr) {
	    try {
	    	FlowVariableMapper flowVariableMapper=(FlowVariableMapper)BeanFactory.getBean("flowVariableMapper");
	    	List<Map<String, Object>> list=flowVariableMapper.selectPublicItemList(sqlStr);
	    	List<Map<String, Object>> ls=new ArrayList<>();//组装后的list
	    	if(null!=list&&list.size()>0){
	    		//ObjectMapper mapper=new ObjectMapper();
	    		//String jsonStr=mapper.writeValueAsString(list);
	    		//循环遍历2次,拿到第一个key和第二个key
	    		Map<String, Object> map=list.get(0);
	    		int i=0;
	    		String valueStr="";
	    		String nameStr="";
	    		for(java.util.Map.Entry<String, Object> entry : map.entrySet()) {
	    			if(i==0){
	    				valueStr=entry.getKey();
	    			}
	    			if(i==1){
	    				nameStr=entry.getKey();
	    			}
	    			++i;
	    		}
	    		//根据拿到的key,重新进行组装
	    		for (Map<String, Object> map2 : list) {
					Map<String, Object> newMap=new HashMap<>();
					newMap.put("id", map2.get(valueStr));
					newMap.put("itemName", map2.get(nameStr));
					newMap.put("groupId", "public");
					newMap.put("selected", false);
					ls.add(newMap);//添加
				}
	    	}
	    	Map<String, Object> mapList=new HashMap<String, Object>();
	    	mapList.put("list", ls);
	    	return mapList;
	    } catch (Exception e) {
	        LOGGER.error("Error method getPublicOptionItemList", e);
	        throw new ActivitiException("Error method getPublicOptionItemList", e);
	      }
	    }
分享到:
评论

相关推荐

    详解MyBatis直接执行SQL查询及数据批量插入

    在对应的DAO接口中,定义一个方法,使用`@Param`注解将SQL字符串作为参数传递。 ```java public interface SomeDAO { List&lt;InstanceModel&gt; getInstanceModel(@Param("paramSQL") String sql); } ``` 3. **...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...

    Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql

    在MyBatis框架中,有时候我们可能需要在代码中直接编写SQL语句,而不是通过XML配置文件来执行SQL。这种情况通常发生在动态SQL或者特定场景下的临时查询中。本篇文章将详细探讨如何在MyBatis中执行String类型的自定义...

    mybatis-demo11-动态SQL语句.zip

    例如,如果传入的参数不为空,则在SQL语句中添加相应的条件。语法结构如下: ```xml SQL片段 ``` 其中,`condition`是Java表达式,用于判断是否执行对应的SQL片段。 3. **Choose/When/Otherwise标签**: `...

    数据库建表sql和mapper文件

    例如,创建一个名为`users`的表,可能包含以下字段:`id`(整型,主键),`username`(字符串,唯一),`password`(字符串,非空),`email`(字符串)等。SQL脚本文件的作用是确保数据库中存在指定的表结构,便于...

    Mybatis框架 mapper.xml文件中parameterType传递参数常用的几种方式.pdf

    在Mybatis框架中,mapper.xml文件是定义SQL语句、映射规则以及参数传递方式的重要组成部分。正确地使用parameterType传递参数对于开发高质量的应用程序至关重要。以下是几种常用的parameterType参数传递方式以及#和$...

    MyBatis拦截器分页与动态修改SQL及其参数值

    通过修改BoundSql的sql字符串,我们可以实现动态SQL,比如根据条件决定是否包含某个字段的LIKE操作。例如,如果某个参数为null,我们可以将对应的WHERE子句去掉,以避免无效的查询。 以下是一个简单的例子,展示...

    mybatis执行自定义sql工具包

    `mybatis-helper`工具包提供了一种动态的方式来处理这些情况,它允许开发者动态读取SQL语句,并在运行时根据业务需求动态编译和传递参数。 首先,让我们了解一下如何在MyBatis中执行自定义SQL。在MyBatis中,可以...

    mybatis-demo12-动态SQL语句2-基于注解配置.zip

    这极大地提高了代码的可读性和可维护性,避免了大量硬编码的SQL字符串。动态SQL主要通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;foreach&gt;`等标签实现。 2. **基于注解的配置**: ...

    mybatis动态插入sql语句的编写(csdn)————程序.pdf

    `&lt;trim&gt;` 标签用于对SQL字符串进行动态截取和修改,以适应不同的插入场景。 1. **`&lt;trim&gt;` 标签的 `prefix` 属性**: `prefix` 属性用于设置要在SQL语句前添加的内容。在例子中,它添加了 `'('`,表示在插入语句的...

    Mybatis在Mapper.xml文件中的转义字符处理方式.pdf

    在Mybatis框架中,Mapper.xml文件是定义SQL映射的关键组件,它允许开发者编写SQL语句并执行数据库操作。然而,在XML中直接使用一些特殊字符,比如大于(&gt;)、小于(&lt;)、等于(=)、单引号(')和双引号(")等,...

    MyBatis基本CRUD与动态SQL(带log4j.properties).zip

    例如,设置`log4j.logger.org.apache.ibatis=DEBUG`将打印出所有执行的SQL语句及其参数,这对于调试和优化SQL性能非常有帮助。 综上所述,MyBatis基本CRUD操作涉及了数据库中的基本操作,而动态SQL则展示了MyBatis...

    spring-boot+tk.mybatis通用mapper

    通过这个接口,我们可以直接调用基本的CRUD方法,无需编写SQL语句。 5. **实体类和Mapper XML**: 设计数据库表对应的Java实体类,并创建对应的Mapper XML文件。通用Mapper会根据XML中的`&lt;resultMap&gt;`标签自动处理...

    SQL.rar_MyBatis3DynamicSql_dynamic mybatis_mybatis_mybatis Dyna

    MyBatis,作为一个优秀的Java持久层框架,极大地简化了数据库操作,它允许开发者将SQL语句直接写在XML配置文件或者注解中,实现了SQL与Java代码的解耦。而在MyBatis 3中,引入了动态SQL的功能,这正是"SQL.rar_...

    myBatis.net详细手册

    - **SQL语句**:myBatis.net支持动态SQL,即可以根据传入的参数动态生成SQL语句。这使得myBatis.net在灵活性方面表现出色。 - **参数映射(Parameter Map)**:用于定义传入SQL语句的参数以及其数据类型、方向等信息...

    ssm整合 - Spring4 + mybatis3 + c3p0(SQL Server).zip

    同时,为每个Mapper创建XML映射文件,定义SQL语句。 3. **配置c3p0**:在`mybatis-config.xml`中配置c3p0的数据源,设置连接池参数。 4. **Spring与MyBatis的集成**:使用`SqlSessionFactoryBean`将MyBatis与Spring...

    myBatis执行流程全解析1

    - `XMLScriptBuilder`处理动态SQL标签,如`if`, `choose`, `when`, `otherwise`等,生成`BoundSql`对象,表示最终的SQL字符串和参数对象。 4. **会话创建**: - `DefaultSqlSessionFactory`打开会话,创建`...

    《一头扎进MyBatis3》第六讲 动态SQL的实现

    同时,要注意动态SQL的使用可能导致SQL注入问题,因此在编写时要注意参数安全,避免直接拼接字符串。 在《一头扎进MyBatis3》第六讲中,你将会详细学习如何在MyBatis的配置文件中使用这些标签,以及如何通过Mapper...

    Mybatis-2021最新.pdf

    - 简化 SQL 编写:MyBatis 允许在 XML 或注解中编写 SQL,无需在 Java 代码中拼接字符串。 - 易于映射:MyBatis 提供了自动类型转换和对象映射,减少了手动处理结果集的复杂性。 - 可定制化:MyBatis 支持动态 SQL,...

    MyBatis动态SQL

    MyBatis动态SQL是MyBatis框架中的一个重要特性,它允许开发者在XML映射文件或者Mapper接口中编写灵活的SQL语句,极大地提高了SQL的可维护性和可读性。动态SQL是面向对象语言中的一种模拟,它使得在SQL查询中可以根据...

Global site tag (gtag.js) - Google Analytics