mybatis零配置,@Select或者SelectProvider如何复用查询列 5C

*Mapper.xml中的用法

  <sql id="Base_Column_List" >
    c_bh, c_mc, d_fbrq, d_ssrq, d_create, d_update
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
    select 
   <include refid="Base_Column_List" />
    from t_fl
    where c_bh = #{cBh,jdbcType=VARCHAR}
  </select>

mybatis零配置,@Select或者SelectProvider如何复用查询列,达到上边xml中的效果?

1个回答

 public interface UserMapper {
     @SelectProvider(type = SqlProvider.class, method = "selectUser")
     @ResultMap("userMap")
     public User getUser(long userId);
}
 public class SqlProvider {
     public String selectUser(long userId) {
         return "select * from user where userId=" + userId;
     }
 }
weixin_41088527
weixin_41088527 我问的是如何复用,达到xml配置中include语句的效果。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Mybatis源码研究之@SelectProvider系列注解
在刚接触到Mybatis时候,对于Mybatis提供的接口方式调用Mybatis映射文件感到十分地神奇,本文将尝试解开其神秘面纱。
mybatis的鉴别列查询
在查询数据的时候,可以根据查询出来的数据来判断是否需要做进一步查询 dept的mapper文件 <!-- 鉴别器列 column 用于鉴别的列 javaType 列值的类型 SALES部门查员工 --> <collection property="emps" column="deptno" sele
mybatis实现零配置
由于公司的代码生成的xml文件太长不好维护于是就写了 一个mybatis零配置的非侵入性易用性强的工具
关于mybatis中@SelectProvider的一点疑惑
需求是这样的。假如有一个User表,表中字段有id,username,gender,email, address.....rn现在使用mybatis中的@SelectProvider去实现查询逻辑,查询条件是自定义的Map query,query中放入查询的字段和值,假如我放置id,则根据id查询,假如放置username和id,则根据username和id查询,代码实现如下:rnrnUsermapper代码:rnpublic interface UserMapper rnrn @SelectProvider(type=UserMapperProvider.class,method="find")rn public List find(Map query);rnrnrnrnUserMapperProvider代码:rnimport java.util.Map;rn class UserMapperProviderrn public static String find(Map query) rn StringBuffer buffer = new StringBuffer();rn buffer.append("SELECT * FROM user WHERE 1=1 ");rnrn if(query.get("id")!=null)rn buffer.append("AND id = #id ");rn rn if(query.get("username")!=null)rn buffer.append("AND username = #id ");rn rn if(query.get("gender")!=null)rn buffer.append("AND gender = #gender ");rn rn if(query.get("email")!=null)rn buffer.append("AND email = #email ");rn rn return buffer.toString();rn rnrnrnrnservice层:rn@Service("userService")rnpublic class UserServiceImpl rn @Resourcern private UserMapper userMapper; rnrn /*rn * 根据query条件,查询Userrn * rn */rn public List find(Map query) rn return userMapper.find(query);rn rnrnrn问题是rnrn @SelectProvider(type=UserMapperProvider.class,method="find")rn public List find(Map query);rn 好像有问题,这边的参数是如何传递的呢?当条件是Map query或者List或者自定义的时候,如果实现?
@SelectProvider,@Select和xml用法的一点理解
1.@Select 同@select功能类似的还有@insert,@delete,@update,对应于数据库语句的CRUD。使用@select很方便,不用写配置文件,一般是写在mapper的interface类中,用法如下: public interface AdmainMapper{@Select("SELECT * FROM userinfo WHERE username = #{use
select查询增加临时列
select '---' as name from table 增加临时列,每行的列值是写在select后的 &quot;值&quot;
SELECT 如何增加列
通过SELECT ID, YEAR FROM TABLE_NAME1得到视图1如下rnID YEARrn11 2013rn12 2014rnrn然后通过 SELECT SUM(AMT1) AS AMT2, SUM(AMT2) AMT2 FROM TABLE_NAME2得到视图2如下rnAMT1 AMT2 rn160.8 2423rnrn怎么用SELECT把这两个视图连起来形成下面的结果集?rnID YEAR AMT1 AMT2rn11 2013 160.8 2423rn12 2014 160.8 2423rn
mybatis SQL语句复用
mybatis SQL语句复用mapper.xml 中共用mapper.xml 间共用项目中也许我们会遇到一段sql语句被多个查询、增加等语句用到的情况,如何去偷懒呢,复用sql无疑是较好的选择这里只提供简单的示范:如果只是单表查询,并且希望共用的sql只会出现在同一个mapper.xml文件中,那么我们可以直接在<mapper namespace="XXXXX"></mapper>中写下面的业务代
I/O复用(select)
I/O复用(select):一个进程或一个线程能够同时对多个文件描述符提供服务 1、TCP服务器设置 socket bind listen 2、将socket添加到fds中 3、启动while循环 3.1将fds中的文教描述符添加到fdset集合中 3.2启动select 3.3循环探测哪些文件描述符就绪 3.3.1 sockfd 有客户端完成了三次握手 a...
如何实现Select查询??
现在有个问题困扰着我.rn我有一个表ws,字段是:rnwid(工人编号) 和 sid(技术编号)rn表中对应的记录分别是:rn(1,1)rn(1,2)rn(1,3)rn(2,3)rn(2,4)rn现要求工人编号为2具有而工人编号为1没有的技术编号.用Select语句.rnrn望高手赐教!rnrn
Mybatis源码分析(四) - select查询,resultmap详解
select元素 自动映射 前提:SQL列名和JavaBean的属性是一致的; 自动映射等级autoMappingBehavior设置为PARTIAL,需要谨慎使用FULL; 使用resultType; 如果列名和JavaBean不一致,但列名符合单词下划线分割,Java是驼峰命名法, 则mapUnderscoreToCamelC...
mybatis 怎么查询一个月 或者一周的数据
select * from dt_mb_records where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= record_timennn在mysql里可以直接这样写 但是 用mybatis 怎么写 查询一个月的数据
零配置
 基于Struts2.1 annotation的Interceptor代码实例 收藏查阅了网络上的文章,同时结合自己的实践,将今天的学习结果分享如下,欢迎大家拍砖。 /WEB-INF/lib/下包含以下jar包(但不只这两个)struts2-core-2.1.6.jarstruts2-convention-plugin-2.1.6.jar Interceptor代码如下:  view p...
mybatis查询列与实例属性对应
比如你要做连接查询一个表的一个属性,而你不想要返回一个resultMap,不想返回的对象里再嵌套一个对象,怎么办呢? 用AS 关键字,把你查询的列的字段AS成你的实例里属性的名字, 这样就把这个值赋给了你实体类那个对应的字段了! ...
在什么情况下select查询没有返回值和列?
程序代码中写“select column1 from table1”rn返回DataSet dsrn有时候访问ds.Table[0]提示:Cannot find table 0.rn有时候访问ds.Table[0].Rows[0]["column1"]提示:Column “column1” does not belong to table Tablern大部分情况下,程序正常,但是偶尔会出现上面的错误。rn因此,我考虑,是不是sqlServer本身返回ds的时候就没有正确的返回结果?但是什么会导致sqlServer没有正确的返回ds呢?大家帮我想想,拜托了。rnrn
select 如何指定列序号
比发一张表有5列,我不知道具体的列名,我只想查出1列和2列的数据,不用*号rn怎么用rn我用rnrnselect 1,2 form mytable 出来的却不是第一列和第二列数据
怎么用select 查询一空列
怎么用select 查询一空列rn空列只是显示,没有值rnrn如:rnselect *,空列 from [wu_plan]
如何查询到判断列
我有一个表:rn产品名称 出仓数量 仓存数量rn电视机 50 100rn收音机 30 20rn录像机 100 110rnCD机 30 10rnrnrn要查询出下列的数据rn产品名称 是否能出仓rn电视机 1 (仓存数100大于出仓数50,所以可以出仓)rn收音机 0rn录像机 1rnCD机 0rnrnrnrnrn
如何查询指定的列
如果SELECT TOP 4 FROM ...能查询出前面4条记录,如果我想要从第5条记录开始到第10条的记录,这个SQL该怎么写...
select * 如何排除某列?
因为列比较多有A B C D E Frn实际上是要select B C D E F from table,但觉得这样麻烦。rn有没有办法用select * from table但排除A列的写法?
mybatis如何把一个List作为select查询的参数?
就比如说我要select这个list集合中包含的字段的值,我该怎么做?rn selectrn rn #item,jdbcType=VARCHARrn rn from bus_bitemrn where proc_inst_id = #var.processInstanceId,jdbcType=VARCHARrn rn 这样写就一直报错
全注解零配置Spring/SpringMVC/Mybatis/Swagger
全注解零配置Spring/SpringMVC/Mybatis/Swagger,工程里有初始化脚本。
log4j2 如何实现零配置?
如题,有木有大神指点一下啊,官网的讲的太不清楚 还是我英文太差。。。
I/O复用——select的实现
I/O复用 I/O复用是指一个进程或一个线程能够同时对多对文件描述符(sockfd)提供服务。那么服务器上的进程或线程如何对多个文件描述符统一监听,当任意一个文件描述符上有事件发生,其都能及时处理? 有三种方法,今天我着重介绍一下第一种 1.select 2.poll 3.epoll select int  select(int  nfds,fd_set  *readfds,fd_s...
select I/O复用机制
1.需要的头文件----linux 平台 #include &amp;lt;sys/time.h&amp;gt; #include &amp;lt;unistd.h&amp;gt; 2.相关函数 FD_ZERO(fd_set *fdset); FD_SET(int fd, fd_set *fdset); FD_CLR(int fd, fd_set *fdset); FD_ISSET(int fd,fd_set *fdset); ...
I/O复用——select函数
 1、I/O复用:解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。 2、I/O复用适用于: a.  客户端程序要同时处理多个socket。 b.  客户端程序要同时处理用户输入和网络连接。 c.  TCP服务器既要处理监听套接字,又要处理已连接套接字。 d.  服务器要同时处理TCP和UDP请求。 e.  服务器要监听多个窗口或者处理多...
I/O复用——select与poll
I/O复用——select与poll1. select(1). 作用:在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写和异常事件。(2). 函数原型:int select (int nfds,fd_set* readfds,fd_set* writefds,fd_set * exceptfds,struct timeval* timeout) <1>. nfds:指定被监听的文件描述
【MyBatis】MyBatis的学习笔记之<select>标签
id="selectPerson" parameterType="int" parameterMap="deprecated" resultType="hashmap" resultMap="personResultMap" flushCache="false" useCache="true"
I/O复用select函数
《UNIX网络编程第六章笔记》 1、liunx下可用的5种I/O模型:阻塞式I/O、非阻塞式I/O、I/O复用、信号驱动I/O、异步I/O 1.1、阻塞式I/O 默认情形下,所有套接字都是阻塞的,以数据报套接字为例,如图所示: 1.2、非阻塞式I/O 当一个应用进程像这样对一个非阻塞描述符循环调用recvfrom时,称之为轮询。应用进程持续轮询内核,以查看某个操作是否就绪。这么做
Linux 网络编程 select复用模式
起先用多线程进行网络编程,即在服务器上监听socket,当监听到新的客户端连接时,开启一个线程进行处理,直至结束。后来感觉如果客户端很多的话,就会有相应的线程,必定影响效率,所以就尝试了用select复用模式。在网上查了很多资料,感觉大部分都是误人子弟,而且还都是ctrl-c ctrl-v的,连转载都没标。 在服务器上有两种描述字,一种是服务器自己的socket描述符,用于监听新
I/O复用-select系统调用
I/O复用使得程序能够同时监听多个文件描述符,通常一下情况需要用到I/O复用技术:1、客户端程序要同时处理多个socket。 2、客户端程序要同时处理用户输入和网络连接。 3、TCP服务器要同时处理监听socket和连接socket。 4、服务器要同时处理TCP请求和UDP请求。 5、服务器要同时监听多个端口,或者处理多种服务。select系统调用用途:在一段指定的时间内,监听用户感兴趣的文
I/O复用----select系统调用
I/O复用—-select系统调用 先上代码(服务器) ser.c #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;unistd.h&amp;gt; #include&amp;lt;string.h&amp;gt; #include&amp;lt;assert.h&amp;gt; #include&amp;lt;netinet/in.h&amp;gt; #include&amp;...
I/O复用(一)——Select
为什么要有I/O复用          从多进程多线程到进程池线程池,尽管我们处理事件的效率越来越高,但是却有一个问题,一直都没有解决,那就是,当服务器分配了一个线程或进程为某一个客户端服务时,该进程/线程就相当于与这个客户端绑定了,除非客户端断开连接,否则不管有没有请求事件,这个线程/进程都只能为这个客户端处理事件,我们知道,系统允许我们创建的线程/进程是有限的,这样其实会造成资源的浪费,所以...
I/O复用的系统调用——select
I/O复用使得程序能监听多个文件描述符,这对提高程序的性能至关重要。 I/O复用虽然能同时监听多个文件描述符,但它本身是阻塞的,并且当多个文件描述符同时就绪时,如果不采取额外的措施,程序就只能按顺序依次处理其中的每一个文件描述符,这使得服务器程序看起来像是串行工作的。如果要实现并发,只能使用多进程或多线程等编程手段。 Linux下实现I/O复用的系统调用主要有select、poll、epoll
select实现I/O复用
select:系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的对应的FILE *结构的表示...
I/O复用——select系统调用
select系统调用  select系统调用的用途是:在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写和异常的事件。select API  在终端上输入man select,可以查看select系统调用的原型:/* According to POSIX.1-2001 */ #include <sys/select.h>/* According to earlier standards */
I/O复用-Select函数
I/O复用的意义 为了构建并发服务器,一般需要为每个客户端连接都创建一个进程进行通信,不过创建和维护进程的开销是巨大的,需要大量的运算和内存空间,每个进程都有独立的内存空间,所以相互交换数据也要求采用相对复杂的方法,比如管道等。 这时I/O复用就能有效的改善这种情况,他可以使一个进程同时为多个客户端提供服务,当然这里所说的同时并不是真正意义上的同时发生。   Select实现复用服务器端 ...
select * 和select 列效率比较
看到很多资料在介绍sql优化时常说select * 效率是最低的,因为oracle要根据数据字典把 * 转换成对应列再显示出结果,但是我觉得这个说法有问题。 rn当我们select 所有列时, 加入有一列的列名写错了,那么oracle 会直接报错,oracle 为什么会报错?我觉得,因为即使是写的列,oracle同样要查阅数据字典匹配你写的列是否在这个表中存在,那么同样有转换操作,这里还多了个匹配操作。rn我这样想是否正确?求大神指正。
select查询如何实现智能查询
如题:比如,我搜北京好吃的,搜出来的结果我想让他们按照匹配度从高向低排序,rn我知道要自己写规则,可是不会写..希望哪位大牛给点资料我自己去看去。给我讲讲思路 谢谢了.
Mybatis如何解决范围查询
今天进行了一个尝试,尝试背景是:先设置了一个Goods类,里面存在属性price,但是,我现在要进行范围查询,也就是price &amp;gt; ? and price &amp;lt; ?,但是,如果在向statement传入Goods这个实体类时,只能给一个price赋值,而标签却要写两个if进行判断。下面进行代码示例:Goods类的属性信息:类中包含get、set方法,此处没有复制。public class...
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview