mybatis的mapper.xml随意sql语句, 不管表之间存不存在关系, 都可以使用, 但注意resultMap中一定要指定查询数据返回的列 或 对象(其实就是多列封装到一个对象中)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="SmTaskMapper" >
  <resultMap id="BaseResultMap" type="com.ldrc.srm.jczx.dal.dataobject.construction.projectinfo.SmTask" >
    <id column="STASK_ID" property="staskId" jdbcType="INTEGER" />
    <result column="SBI_ID" property="sbiId" jdbcType="INTEGER" />
    <result column="STASK_NUMBER" property="staskNumber" jdbcType="VARCHAR" />
    <result column="STASK_NAME" property="staskName" jdbcType="VARCHAR" />
    <result column="STASK_SHORT_NAME" property="staskShortName" jdbcType="VARCHAR" />
    <result column="STASK_ORDERBY" property="staskOrderby" jdbcType="INTEGER" />
    <result column="STASK_TYPE" property="staskType" jdbcType="INTEGER" />
    <result column="STASK_CHANGE_DATE" property="staskChangeDate" jdbcType="DATE" />
    <result column="STASK_ISCHANGE_STATE" property="staskIschangeState" jdbcType="INTEGER" />
    <result column="PCCI_ID" property="pcciId" jdbcType="INTEGER" />
    <result column="STASK_PARENT_ID" property="staskParentId" jdbcType="INTEGER" />
    <result column="IS_INVALID" property="isInvalid" jdbcType="INTEGER" />
    <result column="spart_name" property="spartName" jdbcType="VARCHAR"/>  <!-- 这个就是我指定的研究人员的列 -->
    <association property="smTaskPlan" resultMap="SmTaskPlanMapper.BaseResultMap"/> <!-- association中没有select就不需要column, column给select的方法传参 , 我这里的方式随意查, 表随意些就像正常的sql语句一样, 可以吧association看做封装多列数据-->
    <association property="smTaskStatus" resultMap="SmTaskStatusMapper.BaseResultMap"/>
  </resultMap>
  <sql id="Base_Column_List" >
    STASK_ID, SBI_ID, STASK_NUMBER, STASK_NAME, STASK_SHORT_NAME, STASK_ORDERBY, STASK_TYPE,
    STASK_CHANGE_DATE, STASK_ISCHANGE_STATE, PCCI_ID, STASK_PARENT_ID, IS_INVALID
  </sql>

  <select id="aa" resultMap="BaseResultMap" parameterType="com.ldrc.srm.jczx.dal.dataobject.construction.projectinfo.SmTask">
  select
          t1.*, t2.*, t3.spart_name
  from sm_s_task t1
    left join sm_s_task_plan t2
        on t1.STASK_ID = t2.STASK_ID
    left join SM_S_PARTICIPA t3
        on t3.SPART_ID = t2.SPART_ID
where t1.sbi_id = #{sbiId} AND t1.STASK_ISCHANGE_STATE = #{staskIschangeState}
  </select>

</mapper>

     @Test	public void aa(){		SmTask st = new SmTask();		st.setSbiId(1);st.setStaskIschangeState(2);		List<SmTask> list = this.sqlSession.selectList("SmTaskMapper.aa", st);		System.out.println(list);		System.out.println(list.size()+" 数量");		for (SmTask smTask : list) {			System.out.println(smTask.getSpartName()+ " "+smTask.getSmTaskPlan().getSstpEndDate());		}	}控制台输出00:39:16.571 [main] DEBUG SmTaskMapper.aa - ooo Using Connection [conn2: url=jdbc:h2:~/srmcydw_v01 user=SA]00:39:16.571 [main] DEBUG SmTaskMapper.aa - ==>  Preparing: select t1.*, t2.*, t3.spart_name from sm_s_task t1 left join sm_s_task_plan t2 on t1.STASK_ID = t2.STASK_ID left join SM_S_PARTICIPA t3 on t3.SPART_ID = t2.SPART_ID where t1.sbi_id = ? AND t1.STASK_ISCHANGE_STATE = ? 00:39:16.618 [main] DEBUG SmTaskMapper.aa - ==> Parameters: 1(Integer), 2(Integer)[SmTask [spartName=明明, staskId=1, sbiId=1, staskNumber=2014BH001, staskName=参与单位课题一的任务一, staskShortName=任务一, staskOrderby=1, staskType=1, staskChangeDate=Sat Oct 25 00:00:00 CST 2014, staskChangeDate1=null, staskIschangeState=2, pcciId=1, staskParentId=1, isInvalid=2, smTaskStatus=com.ldrc.srm.jczx.dal.dataobject.construction.technology.SmTaskStatus@5de5bb3c, smBaseInfo=com.ldrc.srm.jczx.dal.dataobject.construction.projectinfo.BaseInfo@1567904d, smTaskPlan=com.ldrc.srm.jczx.dal.dataobject.construction.technology.TaskPlan@4232ba35], SmTask [spartName=丽丽, staskId=2, sbiId=1, staskNumber=2014BH020, staskName=参与单位课题一的自定义任务一, staskShortName=任务二, staskOrderby=2, staskType=2, staskChangeDate=Sat Oct 25 00:00:00 CST 2014, staskChangeDate1=null, staskIschangeState=2, pcciId=1, staskParentId=1, isInvalid=2, smTaskStatus=com.ldrc.srm.jczx.dal.dataobject.construction.technology.SmTaskStatus@105f0f87, smBaseInfo=com.ldrc.srm.jczx.dal.dataobject.construction.projectinfo.BaseInfo@50f47076, smTaskPlan=com.ldrc.srm.jczx.dal.dataobject.construction.technology.TaskPlan@60037c7f], SmTask [spartName=null, staskId=3, sbiId=1, staskNumber=2014BH021, staskName=参与单位课题一的自定义任务二, staskShortName=任务三, staskOrderby=3, staskType=2, staskChangeDate=Sat Oct 25 00:00:00 CST 2014, staskChangeDate1=null, staskIschangeState=2, pcciId=1, staskParentId=1, isInvalid=1, smTaskStatus=com.ldrc.srm.jczx.dal.dataobject.construction.technology.SmTaskStatus@4e2a718, smBaseInfo=com.ldrc.srm.jczx.dal.dataobject.construction.projectinfo.BaseInfo@3c481b29, smTaskPlan=com.ldrc.srm.jczx.dal.dataobject.construction.technology.TaskPlan@21ef3faa]]3 数量明明 Mon Oct 27 00:00:00 CST 2014丽丽 Tue Oct 21 00:00:00 CST 2014null null

<select id="aa" resultMap="BaseResultMap" parameterType="com.ldrc.srm.jczx.dal.dataobject.construction.projectinfo.SmTask">
  select
          t1.*, t2.*, t3.spart_name
  from sm_s_task t1
    left join sm_s_task_plan t2
        on t1.STASK_ID = t2.STASK_ID
    left join SM_S_PARTICIPA t3
        on t3.SPART_ID = t2.SPART_ID
where t1.sbi_id = #{sbiId} AND t1.STASK_ISCHANGE_STATE = #{staskIschangeState}
  </select>

mybatis随意sql语句的更多相关文章

  1. mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...

  2. 通过Log4j的DEBUG级别来显示mybatis的sql语句

        为了更加方便调试sql语句,需要显示mybatis的sql语句.     网络上的一般方式都是通过log4j来实现,但是很多都有问题.      经过实验,以下代码能够保持正常:(只显示myb ...

  3. springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用

    百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...

  4. Mybatis 动态Sql语句《常用》

    MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...

  5. mybatis 动态sql语句(3)

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...

  6. mybatis 动态sql语句(1)

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...

  7. 【spring boot】【mybatis】spring boot中mybatis打印sql语句

    spring boot中mybatis打印sql语句,怎么打印出来?[参考:https://www.cnblogs.com/sxdcgaq8080/p/9100178.html] 在applicati ...

  8. Java-MyBatis:MyBatis 3 | SQL 语句构建器类

    ylbtech-Java-MyBatis:MyBatis 3 | SQL 语句构建器类 1.返回顶部 1. SQL语句构建器类 问题 Java程序员面对的最痛苦的事情之一就是在Java代码中嵌入SQL ...

  9. mybatis 打印sql 语句

    拦截器 package com.cares.asis.mybatis.interceptor; import java.text.DateFormat; import java.util.Date; ...

随机推荐

  1. Dubbo认识

    Dubbo提供了服务注册.RPC服务调用.调用均衡.服务监控和服务failover等功能 Dubbo框架中有两个重要角色:(服务)提供者和(服务)消费者,这里为了简单起见,将包含了dubbo提供者或消 ...

  2. 创建触发器在表中播入数据时ID自动增长

    ),age )) create or replace trigger gger_tt before insert on ttt for each row when (new.id is null) b ...

  3. 编写SASS的一些技巧

    更好的为变量命名 变量是Sass中最简单的特性之一,但有时候也会使用不当.创建站点范围内有语义化的变量,是不可或缺的工作.如果命名不好,他会变得难以理解和重复使用. 这里有一些命名变量的小技巧,提供参 ...

  4. 每天一道LeetCode--169.Majority Elemen

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  5. 如何同时启动多个Tomcat服务器

    1.使用压缩版的tomcat不能使用安装版的. 2.第一个tomcat的配置不变. 3.增加环境变量CATALINA_HOME2,值为新的tomcat的地址:增加环境变量CATALINA_BASE2, ...

  6. Entity Framework 6.1-Model First

    原文:Entity Framework 6.1-Model First Model First-顾名思义,就是先创建EF数据模型,通过数据模型生成数据库的EF创建方式. 步骤. 1.新建一个DAL的文 ...

  7. OC3_歌词解析

    // // LrcManager.h // OC3_歌词解析 // // Created by zhangxueming on 15/6/15. // Copyright (c) 2015年 zhan ...

  8. (转)如何在高并发分布式系统中生成全局唯一Id

    又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上.最近还写了一个发邮件的组件以及性能测试请看 <NET开发邮件发送功能的全面教程(含邮件组件源码)> ,还弄了 ...

  9. 免费的HTML5连载来了《HTML5网页开发实例详解》连载(三)DOCTYPE和字符集

    在2.1.2节中通过新老DOCTYPE的对比,读者可以清晰地看到HTML 5在精简旧有结构上做出的努力.DOCTYPE在出现之初主要用于XML中,用作描述XML允许使用的元素.属性和排列方式.起初HT ...

  10. 开发者需要知道的11条HTML5小常识

    #HTML5: The Missing Manual# 如果说HTML是一部电影,那HTML5就是一次大转折.HTML本来是不会活过21世纪的.官方Web标准组织W3C在1998年对HTML就已经撒手 ...