智能网站建设公司排名,产品网页的制作,wordpress采集插件 免费下载,如何给网站添加cnzz站长统计功能代码的常用办法第一章 Mybatis中参数传递问题
1.1 单个普通参数
可以任意使用#xff1a;参数数据类型、参数名称不用考虑
1.2 多个普通参数
Mybatis底层封装Map结构#xff0c;封装key为param1、param2…【支持#xff1a;arg0、arg1、…】
1.3 命名参数 语法#xff1a; Param(val…第一章 Mybatis中参数传递问题
1.1 单个普通参数
可以任意使用参数数据类型、参数名称不用考虑
1.2 多个普通参数
Mybatis底层封装Map结构封装key为param1、param2…【支持arg0、arg1、…】
1.3 命名参数 语法 Param(value“参数名”)Param(“参数名”) 位置参数前面 注意 底层封装Map结构命名参数依然支持参数【param1,param2,…】 示例代码 /*** 通过员工姓名及薪资查询员工信息【命名参数】* return*/
public ListEmployee selectEmpByNamed(Param(lName)String lastName,Param(salary) double salary);select idselectEmpByNamed resultTypeemployeeSELECTid,last_name,email,salaryFROMtbl_employeeWHERElast_name#{param1}ANDsalary#{param2}
/select源码分析 MapperMethod对象142行代码【命名参数底层代码入口】 命名参数底层封装map为ParamMapParamMap继承HashMap ParamNameResolver对象130行代码命名参数底层实现逻辑 //130行
final MapString, Object param new ParamMap();
int i 0;
for (Map.EntryInteger, String entry : names.entrySet()) {param.put(entry.getValue(), args[entry.getKey()]);// add generic param names (param1, param2, ...)final String genericParamName GENERIC_NAME_PREFIX (i 1);// ensure not to overwrite parameter named with Paramif (!names.containsValue(genericParamName)) {param.put(genericParamName, args[entry.getKey()]);}i;
}
return param;1.4 POJO参数
Mybatis支持POJO【JavaBean】入参参数key是POJO中属性
1.5 Map参数
Mybatis支持直接Map入参map的key参数key
1.6 Collection|List|Array等参数
参数名collection、list、array
第二章 Mybatis参数传递【#与$区别】
2.1 回顾JDBC
DriverManagerConnectionStatement执行SQL语句入参使用SQL【String】拼接方式PreparedStatement执行SQL语句【预编译SQL】入参使用占位符方式ResultSet
2.2 #与$区别
【#】底层执行SQL语句的对象使用PreparedStatementd预编译SQL防止SQL注入安全隐患相对比较安全。【$】底层执行SQL语句的对象使用Statement对象未解决SQL注入安全隐患相对不安全。
2.3 #与$使用场景 查询SQLselect col,col2 from table1 where col? and col2? group by ?, order by ? limit ?,? #使用场景sql占位符位置均可以使用# KaTeX parse error: Expected EOF, got # at position 6: 使用场景#̲解决不了的参数传递问题均可以…处理【如form 动态化表名】 /*** 测试$使用场景*/
public ListEmployee selectEmpByDynamitTable(Param(tblName) String tblName);select idselectEmpByDynamitTable resultTypeemployeeSELECTid,last_name,email,salaryFROM${tblName}
/select