mybatis传值到XML里面,为什么参数类型是HashMap可以获取到参数值,Map就不行?

图片说明
图片说明

[图片说明
[图片说明

第一二张图是别人写的代码,三四张是我写的代码,一开始我也像他那样在XML文件里面传入的参数配置为java.util.Map,虽然能正常运行,但是却不能传入参数,打印出来的SQL,传入的参数显示为“?”当我把传入的参数类型改为java.util.HashMap又能看到传入的参数为正常,请问为什么,我们代码基本都是一样的啊。

0

6个回答

情况一:parameterType="HashMap"
图片说明
图片说明
结果:sql正常执行,参数传递与接收正常。

情况二:parameterType="Map"
图片说明
图片说明
结果:sql正常执行,参数传递与接收正常

完整sql如图:
图片说明

初步推断你对mybatis的两个符号不知道区别:“#”、“$”
--使用“#”拼接参数的话,打印的sql执行log,就会出现“?”,并且能看到sql的log的下方有形如这样的参数【==> Parameters: 1(String), 0(Integer), 10(Integer)】
例如:假设startTime的值为‘2017-12-16', select * from user where create_time > #{startTime}
执行结果是:
==> Preparing : select * from user where create_time > ?
==> Parameters: 2017-12-16(String)

--使用“$”拼接参数的话,打印的sql是连带参数一起打印出来。
例如:假设startTime的值为‘2017-12-16', select * from user where create_time > #{startTime}
==> Preparing : select * from user where create_time > '2017-12-16'

1
maoadd
maoadd 虽然不是这个问题,但是那么详细的解答还是谢谢,之前那个问题可能是编辑器哪里出了问题,关了编辑器重启就好了
一年多之前 回复
weixin_36146275
weixin_316529 纠正:--使用“$”拼接参数的话,打印的sql是连带参数一起打印出来。 例如:假设startTime的值为‘2017-12-16', select * from user where create_time > ${startTime}
一年多之前 回复

因为Map是一个接口,想要接受结果必须使用这个接口的实现类。Map那么多实现类,如果你不知道具体用哪个实现类而只告诉mybatis用map的任何实现类都可以,那mybatis接收不到结果或者结果错了,是你负责还是mybatis负责?

2
qq_36520153
书生_AABB 666
一年多之前 回复

你试试这样写:

 <select id="select" parameterType="java.util.Map" resultMap="RM">
        SELECT ... 
        FROM ....
        WHERE id=#{parameterMap.openid}
    </select>
0


SELECT ...
FROM ....
WHERE id=#{parameterMap.openid}
你试试看看

0

SELECT ...
FROM ....
WHERE id=#{parameterMap.openid}

0

Map只是一个接口,hashmap是实现类

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在textcontainer里面可以运行为什么在html里面就不行
我想用ATL开发DLL库,在DLL里面的控件调用其他DLL来完成本地的打印rn,把空间放在HTML页面上,在本地访问页面来完成打印。rn 问题1:我这么做可以吗?rn 问题2:我在test Container里面可以实现,但在(本地)HTML里面就不可以了rn为什么rnrnrnrn ATL 3.0 test page for object PolyCtlrnrnrnrn>rnrn
IE8和IE7获取到参数值不一致问题
在IE8中打开一个静态页面D:\test.htm,提交到tomcat服务应用的一个jsp中http://127.0.0.1:8008/getpa.jsprn获取到的参数值如果存在多个“=”,则第2个开始“=”变成“#”rnrn代码如下:rntest.htmlrnrnrn testrn rnrnrn rn rn rn rn rnrnrn rnrngetpa.jsprnrn<%@ page language="java" contentType="text/html; charset=gb2312" %>rn<%rn String v_path = request.getParameter("v_path");rn out.println( "v_path="+v_path ); rn%>rnrn页面打印出来:v_path=folder[@name='AA']/folder[@name#'BB']/folder[@name#='CC']rnrn在IE7的打印出来为:v_path=folder[@name='AA']/folder[@name='BB']/folder[@name='CC']rnrn哪位大侠指教下这是什么引起的,怎么解决?
手机无法获取到IP是为什么?
我在的公司是电信的独立IP上网,用H3C的路由器接入。然后在我们的楼层有一个交换机,分配给这个楼层使用,这个楼层有一个屋子放的是服务器,于是又接入了一个交换机。rnrn公司有几个HTC的手机,平时经常使用网络,于是,又增加了一个TP-Link WR340G的小无线路由器,为了保持在同一网段,放在服务器的那个屋子里面,交换机出来一根线插在TP-Link的LAN口。rnrn但是现在的情况是:rnrn当手机从来没连接到无线的时候,正常连接,如果断开连接超过10分钟,就不能在获取IP地址,但是重启TP-Link后,又可以连接了。 rnrn就是每次想要重新连接无线,就必须重启TP-Link的路由。rnrn每次都重启实在太麻烦了,找了这么久。也没找到解决的办法。
为什么获取到文本框中的是乱码
.net程序,页面用的是html控件,rn[code=C#][/code]rn在后台需要获取到这个值,但是获取到的是乱码,为什么呀?该怎么解决?我好像没分了rn后台是这样获取的,因为用的是post传值rn[code=C#]string html = API.getbdpm(Request["keyword"].ToString());[/code]
Mybatis用hashMap作为参数类型问题
当用hashMap作为parameterType时,没有报错,但是返回的结果为控制,从控制台输出的SQL语句粘贴到数据库中,运行没错:rnrn[img=https://img-bbs.csdn.net/upload/201611/29/1480409731_7760.png][/img]rn[img=https://img-bbs.csdn.net/upload/201611/29/1480409742_256817.png][/img]rn[img=https://img-bbs.csdn.net/upload/201611/29/1480409759_665254.png][/img]rn[img=https://img-bbs.csdn.net/upload/201611/29/1480409768_163839.png][/img]
Mybatis批量添加,页面获取到的值怎么放入List里面
![图片说明](https://img-ask.csdn.net/upload/201508/17/1439799837_387269.png)
MyBatis更新数据(输入参数类型为Map)
public boolean updateFpkjByCondition(Map params) { MapString , Object> map = new HashMap(); map.put("params" , params); return getMybatisDao().execute(FpkjConstant.UPDATEFPKJBYCONDITION, m
关于XML解析的问题,为什么可以,就不行呢?
XML格式为:rnrnrn...rnrnrnrn...rnrnrnrn对于我用如下语句可以得到:rnforeach($xml->tag as $tag)rn foreach ($tag->attributes() as $attribute) rn echo $attribute->getName().":".$attribute;rn rn echo " ";rnrnrn对于我该用什么语句得到值呢?rn
delegate, event - 里面涉及的参数类型必须完全一致,子类是不行的
public void TestF() { Test += Fun; } public void Fun(Person p) { }  // 如 Person变成 SubPerson,则报错。。public void Fun(SubPerson p) { } public event Action Test;
mybatis 的参数类型
mybatis  只能接受4中参数类型 简单参数类型 pojo对象类型 pojo 的包装类类型(queryVo类型) map类型
mybatis获取到的数据为NULL
SQL语句没错的情况下,获取不到mybatis返回的数据,原因是映射文件出错。例子:// 有一个实体类 class test{ private String myName; private int myAge; …… // getter和setter方法 } // 假设数据库对应的列名分别为 my_name 和 my_age ,表名为 me // 直接写se
mybatis里面参入参数类型错误问题
虽然是一个小问题但还是记录一下, <select id="getUserList" parameterType="Map" resultMap="BaseResultMap" resultType="String"> select * from userinfo where 1=1 <if test="_parameter != null" > and re
Mybatis的返回值是Map
&amp;lt;select id=&quot;selectUserAndInfoMap&quot; parameterType=&quot;Integer&quot; resultType=&quot;map&quot;&amp;gt; select u.id,i.user_name,u.user_mobile,r.region_id,r.region_name,u.user_email,u.create_date from base_login_user...
为什么HtmlGenericControl不能在一个方法里面获取到。
高手指点HtmlGenericControl不能在一个方法里面获取到,又没有好的办法在一个方法里面获取HtmlGenericControl控件,显示在浏览器的这个HtmlGenericControl控件是一个隐藏控件。
怎样写SelectNodes 可以获取到以上xml的name值
rn 1rnrn rn 2rnrn rn 3rnrn rn 3rnrn rn 4rnrnrnXmlNodeList ndList = root.SelectNodes("Form[Name=*]");rnrn怎样写SelectNodes 可以获取到以上xml的name值 rnrn我要把 1 2 3 4 放进一个list中
textarea 里面内容换行。怎么获取到是在那里换行?
我在textarea里面输入内容,text宽度固定,文字输入到边,就自动换行了。但是我后台获取到的字符串没有换行符,我想知道怎么样才可以获取到换行符,或者怎么判断文字到边了,主动添加一个换行符。rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/14.gif][/img]rn召唤各位大神。给个意见。怎么弄啊。。rn我试了判断宽度,但是中英文标点符号的宽度都不同啊。右边换行那里会跟锯齿一样好难看,因为我要用imagick做图片,所以这个字符串太丑,图片好难看啊,而且文字大小不同,宽度又不一样了。有没有什么好的解决方案,,rn先谢谢了。。
为什么本机可以连接数据库,远程就不行
我的代码有什么问题,本机可以连接数据库,远程就不行rn报错信息是:错误代码:2147217843rn 错误提示:用户"(计算机名或服务器名)\GUEST"登录失败rn我的计算机名和服务器名是一样的rnGlobal g_ConDB As New ADODB.ConnectionrnrnPublic Function ConnectToDB() As BooleanrnOn Error GoTo Err1rn rn rn g_ConDB.ConnectionString = "Provider = sqloledb.1; Integrated Security = SSPI; Persist Security Info =false;" & _rn " Data Source=" & 服务器名 & "; Initial Catalog = " & 数据库名 & "; uid=sa;pwd=shizh; server=" & 服务器名rn g_ConDB.ConnectionTimeout = 30rn g_ConDB.Openrn ConnectToDB = Truern Exit FunctionrnErr1:rn ConnectToDB = Falsern MsgBox "ConnectToDB错误" & vbCrLf & "错误代码:" & Err.Number & vbCrLf & "错误提示:" & Err.Description, vbCritical + vbOKOnly, "错误"rnEnd Function
为什么0-65535可以,65536-99999就不行???
一个将输入的5位十进制数以二进制BCD码显示出来的程序。rn我编的程序如下:rnrndata segmentrn mess1 db 'Input number:$'rn mess2 db 'Its BCD code is $'rn number db 6,?,6 dup(?)rndata endsrnstack segmentrn dw 20 dup(?)rnstack endsrncode segmentrn assume cs:code,ds:data,ss:stackrnstart:mov ax,datarn mov ds,axrn mov ax,stackrn mov ss,axrnrnagain:lea dx,mess1rn mov ah,09hrn int 21hrnrn lea dx,numberrn mov ah,0ahrn int 21hrnrn mov ah,02hrn mov dl,0dhrn int 21hrn mov dl,0ahrn int 21h ;回车换行rnrnrnrn;省略了中间应该没错的部分,这时已经让(dx,ax)=输入的数的值了。如输入99999时(dx,ax)=0001869fHrnrnd: mov bx,2 ;bx中放除数2rnc: div bxrn push dxrn inc cx ;cx用于保存以后出栈的次数,此前已经有(cx)=0rn cwd ;将ax中的字扩展为dx,ax中的双字rn cmp ax,0rn jne crnrn lea dx,mess2rn mov ah,09hrn int 21hrnrn mov ah,02hrndisp: pop dxrn add dx,30hrn int 21hrn loop disprnrn;若在此处加上jmp again则生成的执行文件执行时会弹出警告窗口:rnC:\WINNT\SYSTEM32\CMD.EXE -9 NTVDM CPU遇到无效的指令。CS:056f IP:0026 OP:f0rnd0 fb dc e6 选择关闭终止应用程序。rnrn mov ax,4c00hrn int 21hrnrncode endsrn end startrnrnrn请问大侠:rn1.该程序生成的执行文件对0——65535之间的数均能正确得出结果。但从rn65536——99999却显示Divide overflow。这是何故?要如何改正?rn2.在上述处加上jmp again出现的是什么错误?如果要再让你输入数重新得出结果,要rn怎么改?rnrnrnrnrnrnrn///////////////////////////////////////rnrn附完整程序:rnrndata segmentrn mess1 db 'Input number:$'rn mess2 db 'Its BCD code is $'rn number db 6,?,6 dup(?)rndata endsrnstack segmentrn dw 20 dup(?)rnstack endsrncode segmentrn assume cs:code,ds:data,ss:stackrnstart:mov ax,datarn mov ds,axrn mov ax,stackrn mov ss,axrnrn lea dx,mess1rn mov ah,09hrn int 21hrnrn lea dx,numberrn mov ah,0ahrn int 21hrnrn mov ah,02hrn mov dl,0dhrn int 21hrn mov dl,0ahrn int 21hrnrn lea si,number+1rn mov cx,[si]rna: inc sirn sub byte ptr [si],30hrn loop a ;将每一位以ASCII码输入的数(其实是字符)转换成二进制数rnrn mov al,number[1]rn cbwrn mov cx,ax ;(cx)=输入的数的位数rn lea si,number+2rn mov al,[si]rn mov ah,0rn mov dx,0rn dec cx ;此时的(cx)方为要乘以10的次数rn cmp cx,0rn je d ;(cx)=0,即输入的是一位数,不用乘以10rnrn mov bx,10rnb: mul bxrn inc sirn add al,[si]rn adc ah,0rn adc dx,0rn loop brnrnd: mov bx,2 ;bx中放除数2rnc: div bxrn push dxrn inc cx ;cx用于保存以后出栈的次数,此前(cx)=0rn cwd ;将ax中的字扩展为dx,ax中的双字rn cmp ax,0rn jne crnrn lea dx,mess2rn mov ah,09hrn int 21hrnrn mov ah,02hrndisp: pop dxrn add dx,30hrn int 21hrn loop disprnrn mov ax,4c00hrn int 21hrnrncode endsrn end startrnrn
这样可以,那样为什么就不行?
sql2="......"rnsql3 = "select * from (" & sql2 & ")"rnrs1.Open sql3, conn, adOpenKeyset, adLockOptimisticrnrn这样可以!rnrnrnrnsql2="......"rnsql3 = "select * from (" & sql2 & ") left join per on (" & sql2 & ").并列排名=per.排名"rnrs1.Open sql3, conn, adOpenKeyset, adLockOptimisticrnrn而这样为什么就不行?为什么啊,百思不得其解!
为什么Debug可以,Release就不行?
大侠们,我写了一个程序,在Debug情况下运行正常,可在Release情况下运行却rn告诉我未将对象引用到实例,我查了半天,没什么错误呀,说说原因吧
为什么数字可以,字符就不行啊??
在js里有个函数function tt(a) alert(a); rn在后台调用问什么rn protected void Button3_Click(object sender, EventArgs e)rn rn string name = "1111";rn this.Page.RegisterStartupScript("shownote", " ");rn rn可以,而rnprotected void Button4_Click(object sender, EventArgs e)rn rn string gg = "gfds";rn this.Page.RegisterStartupScript("shownote", " ");rn rn就报gfds为定义啊??应该如何改啊??
为什么查询可以,插入就不行呢?
查询按钮中的代码:rnADOQuery1.Close;rnADOQuery1.SQL.Clear;rnADOQuery1.SQL.Add('select * from Diary');rnADOQuery1.Open;rn完可以运行;rnrn插入就不行了:rnADOQuery1.Close;rnADOQuery1.SQL.Clear;rnADOQuery1.SQL.Add('inser into Diary(date,synopsis,content)');rnADOQuery1.SQL.Add('values (:date,:synopsis,:content)');rnADOQuery1.Params[0].ASString:=Edit1.Text;//下面三句报错。rnADOQuery1.Params[1].AsString:=Edit2.Text;rnADOQuery1.Params[2].ASString:=MeMo1.Text;rnADOQuery1.ExecSQL;rnrn改成:rnrnADOQuery1.ParamByName('date').value:=Edit1.Text;//下面三句报错。rnADOQuery1.ParamByName('synopsis').value:=Edit2.Text;rnADOQuery1.ParamByName('content').value:=MeMo1.Text;rnrnrn请问各位兄弟,这是什么原因?rn怎么改?
为什么通信第一次可以,第二次就不行
一个简单的TCP通信用WINSOCK实现,第一次可以得到正确的结果,rn第二次却一直等待(好像阻塞了),我在服务器端的SOCK已经关闭了也不行,rn请指教。rn
为什么IE可以获取到base64加密过的cookie而chrome和firefox无法获取到?
[b]RT,我测试了一下,用同样的方法加密另一个数组(php中的数组,里面有中文,先用serialize()再base64_encode())然后加入cookie在chrome和firefox中是可以获取到的,难道是那个数组的问题?没理由啊,IE可以获取到......[/b]
RedHat7.2可以为什么RedHat8.0就不行?
当oracle8.1.7装到65%的时候如下错误:rnError in invoking target of relink of makefile /opt/oracle/producrnt/8.1.7/precomp/lib/ins_precomp.mk和好几个*.mk有问题出错,不知什么原因!!
为什么我获取到的返回的XML,经常是这样
无法显示 XML 页。 rn使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。 rnrn rn
Map map = new HashMap();
这句话提示错误:HashMap cannot be resolved to atype;怎样解决?求大神。
ajax 获取到 data(xml)如何解析
$.ajax(rn type: "get",rn url: "Handler.ashx?time=" + Math.random(),rn success: function (data) rn alert(data);rn rn );rn以下是弹出的xmlrn--------------------------rnrn123rn2011rnaaarn rnrn11rn2012rnbbbrn rnrnrn---------------------------rnrn问题:如何 获取 ID 之间的文本。循环到 id为 dv1 的 DIV里面。rn请问在 success后面要怎么处理这个 data
关于获取到xml某一节点
INSID[img=https://img-bbs.csdn.net/upload/201504/08/1428470916_26750.png][/img]ENODEID 我想通过的值来搜索 这个xml中对应的节点可以么?
为什么到1000000就不行??
用插入排序法写了个程序,源码如下:rn #includern#includernrn#define MAX 100000rnrnvoid main()rnrn ofstream out("result.txt");rn int array[MAX];rn int temp,i,j;rn for(i=0;i array[j])rn rn temp = array[i];rn array[i] = array[j];rn array[j] = temp;rn rn rn rn for(i=0;i
Map与HashMap
大神救命啊!!!rn  (1)编写Student类,只有String name与int age两个属性和他们的setter/getter方法,覆盖其hashCode与equals方法。rn  (2)编写方法ListgetRandomStudents(int n)随机生成n个学生的列表。rn  说明:调用“基础代码”中的Util.getRandomName (int min, int max)获取随机名字,调用public static int getRandomAge(int min, int max)生成随机年龄。rn  (3)在Util类中编写方法:public static MapmakeStudentMap(List);,将List中每个Student的name作为key, Student对象本身作为value放入Map中,并返回。rn  (4)在Util类中编写方法:public static Student searchStudent(MapstuMap, String name);,根据指定的name返回对应的学生,如果没有找到返回null。rn  (5)在Util类中编写方法:public static ListgenerateNameList(int n);,生成n个字符串的NameList并返回。rn  (6)在Util类中编写方法:MapgenerateStudentMap(int n);,生成包含n个键的的StudentMap并返回。rn  说明:调用getRandomStudents方法;调用makeStudentMap方法;返回StudentMap。rn  (7)对比测试。在初始化阶段调用generateNameLis方法生成nameList列表,里边包含1千万个字符串。在初始化阶段调用getRandomStudents生成1千万个Student对象,然后调用makeStudentMap方法生成stuMap映射表。rn  对nameList调用searchName方法搜索指定字符串并统计执行时间。rn  对stuMap调用searchStudent方法搜索指定字符串对应的学生对象并统计执行时间。rn  思考:步骤(7)中,哪个方法搜索速度快?为什么?rn  (8)遍历输出StudentMap前10个的key,前10个value,前10个entry。参考课本P852代码。rn[img=https://img-bbs.csdn.net/upload/201311/19/1384872327_194606.png][/img]rn
为什么就不行呢?
SystemParametersInfo 取系统参数都通过,为什么设置参数就不行呢rnrntj = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, tj, Null, 0)
为什么中文就不行?
select to_char(sysdate,'DAY','NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE') from dualrnrnORA-12702: invalid NLS parameter string used in SQL functionrnrn真是气人啊,那个SIMPLIFIED CHINESE 换成FRENCH或GERMAN之类的可以。为什么中文的不行?rn还是中间的空格有问题?rn我大小写全试验过了。
【Map】——HashMap
一、Map体系的继承树 二、HashMap 1.概述:HashMap 是基于哈希表的 Map 接口的实现,以 Key-Value 的形式存在,即存储的对象是 Entry (同时包含了 Key 和 Value) 。在HashMap中,其会根据hash算法来计算key-value的存储位置并进行快速存取。特别地,HashMap最多只允许一条Entry的键为Null(多条会覆盖),但允许多条E...
MVC3:为什么页面Post后action可以获取到参数。
页面代码:rn[code=HTML]rn@model MvcMovie.Models.LogOnModelrnrn@rn ViewBag.Title = "Log On";rnrnrn Log Onrn rn Please enter your user name and password. @Html.ActionLink("Register", "Register") if you don't have an account.rnrnrn rn rnrn@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")rnrn@using (Html.BeginForm()) rn rn rn Account Informationrnrn rn @Html.LabelFor(m => m.UserName)rn rn rn @Html.TextBoxFor(m => m.UserName)rn @Html.ValidationMessageFor(m => m.UserName)rn rnrn rn @Html.LabelFor(m => m.Password)rn rn rn @Html.PasswordFor(m => m.Password)rn @Html.ValidationMessageFor(m => m.Password)rn rnrn rn @Html.CheckBoxFor(m => m.RememberMe)rn @Html.LabelFor(m => m.RememberMe)rn rnrn rn rn rn rn rnrnrn[/code]rnrn后台代码:rn[code=C#]rn [HttpPost]rn public ActionResult LogOn(LogOnModel model, string returnUrl)rn rn if (ModelState.IsValid)rn rn if (Membership.ValidateUser(model.UserName, model.Password))rn rn FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);rn if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")rn && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))rn rn return Redirect(returnUrl);rn elsern rn return RedirectToAction("Index", "Home");rn rn elsern rn ModelState.AddModelError("", "The user name or password provided is incorrect.");rn rn rnrn // If we got this far, something failed, redisplay formrn return View(model);rn rnrn[/code]rn这个action的2个参数是怎么获取到的啊?
(集鱼和唯佳)为什么控制器可以获取到member_id
因为控制器每个控制器一开始都会执行init()这个父类文件,而在init()这个父类当中yaf已经把member_id写到全局变量里面了
Datagrid的HeadTemplate可以获取到系统时间吗?
我想做一个DataGrid第一个HeadTemplate获取今天的系统时间,总共七个HeadTemplate~
C#为什么Screen.AllScreens.Count()获取到的是一台显示器的数量。
C#为什么Screen.AllScreens.Count()获取到的是一台显示器的数量的,我一台显示器用VGA接口连接,另外一台是用HDMI接口连接。
java rmi获取到的对象为什么是单例的?
我通过java RMI 技术开发了一套核心业务Service,然后希望其他java应用通过RMI来访问.rn比如当下创建了一个 rmi://127.0.0.1:10990/MyServicern然后客户端通过这个url得到的MyService,发现居然全部都是同一个对象,这样一旦并发完全可以引起巨大的线程安全问题呀,请问RMI有方法可以解决吗?rnrn其实之后通过Hessian+Spring勉强实现了Prototype,但是由于项目的原因并不希望使用hessian,所以还是希望能够在RMI上寻找突破口,谢谢!
pushuviewcontroller之后获取到的self.storyboard 为 nil是为什么啊
[self.navigationController pushViewController:searchViewController animated:YES];rn然后我在seachViewController里去获取self.storyboard就拿到了空值,这是为什么啊。。
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合