VC中_T()的作用

本文介绍了Windows系统中ANSI和UNICODE两种字符集的区别与应用。ANSI为单字节编码,在处理双字节字符时易出现问题;UNICODE采用双字节编码,更适合处理包括中文在内的多语言环境。文中还解释了_T()和_L()宏的作用及其在不同编译模式下的行为。

Windows使用两种字符集ANSI和UNICODE,

前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。

而后者是双字节方式,方便处理双字节字符。

Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。_T一般同字常数相关,如_T("Hello")。如果你编译一个程序为ANSI方式,_T实际不起任何作用。

而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。

_T()和_L()的区别在于,_L不管你是以什么方式编译,一律以以 UNICODE方式保存。 

你提供的是一段 **MyBatis XML 中的 `<select>` 查询语句**,为了将其转换为 **可在数据库客户端中直接运行的可测试 SQL 语句**,需要将 MyBatis 的占位符(如 `#{}`)替换为实际的测试值。 --- ### ✅ 原始 SQL(MyBatis XML): ```xml <select id="queryCpxxs" parameterType="java.util.Map" resultType="java.util.Map"> select t.l_cpid l_cpid, t.vc_cpdm vc_code, t.vc_cpjc vc_name, t.vc_name vc_fullname, t.vc_glrbh vc_jjglr_code, t.vc_glrmc vc_jjglr, t.d_clrq d_create, t.l_clzt l_yzzt, t.vc_clzt_name vc_clzt_name, t.l_tgfs l_tgfs, t.vc_tgfs_name vc_tgfs_name, t.vc_clrq vc_clrq, t.en_mjje en_mjje, t.en_zfe en_zfe, t.d_dqrq d_dqrq, t.l_class l_class, t.l_cnjsfs l_cnjsfs, t.l_jjtzlx l_jjtzlx, t.l_zclx l_zclx, t.vc_wbjgbh vc_wbjgbh from v_tqs_cptgzhxx t WHERE t.vc_cpdm = #{vc_code} </select> ``` --- ### ✅ 转换为可测试 SQL: 假设你传入的参数为 `vc_code = 'CP001234'`,那么可测试 SQL 为: ```sql SELECT t.l_cpid AS l_cpid, t.vc_cpdm AS vc_code, t.vc_cpjc AS vc_name, t.vc_name AS vc_fullname, t.vc_glrbh AS vc_jjglr_code, t.vc_glrmc AS vc_jjglr, t.d_clrq AS d_create, t.l_clzt AS l_yzzt, t.vc_clzt_name AS vc_clzt_name, t.l_tgfs AS l_tgfs, t.vc_tgfs_name AS vc_tgfs_name, t.vc_clrq AS vc_clrq, t.en_mjje AS en_mjje, t.en_zfe AS en_zfe, t.d_dqrq AS d_dqrq, t.l_class AS l_class, t.l_cnjsfs AS l_cnjsfs, t.l_jjtzlx AS l_jjtzlx, t.l_zclx AS l_zclx, t.vc_wbjgbh AS vc_wbjgbh FROM v_tqs_cptgzhxx t WHERE t.vc_cpdm = 'CP001234'; ``` --- ### 📌 说明: - `#{vc_code}` 是 MyBatis 的参数占位符,表示从 Map 中取名为 `vc_code` 的参数。 - 转换成可测试 SQL 时,应替换为实际值,如 `'CP001234'`。 - 所有字段都加上了 `AS` 别名,与 MyBatis 中的映射字段保持一致。 --- ### ✅ 如果你想测试其他值: 只需替换 `WHERE` 条件中的值即可,例如: ```sql WHERE t.vc_cpdm = 'CP001235'; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值