买书的网站排名,去国外做外卖网站,网站建立快捷方式,wordpress换域名搬家mybatis参数传递#xff1a; 单个参数#xff1a;不做特殊处理 #{参数名}#xff1a;取出参数值 多个参数#xff1a;做特殊处理 多个参数会被封装成一个map key#xff1a;param1 ... paramN value#xff1a;传入的参数…mybatis参数传递 单个参数不做特殊处理 #{参数名}取出参数值 多个参数做特殊处理 多个参数会被封装成一个map keyparam1 ... paramN value传入的参数值 #{}就是从map中获取指定的key值 操作 方法public Employee getEmployeeByNmaeAndPass(String name,String pass); 取值#{name}#{pass} 命名参数明确指定封装参数时map的keyParam(id) 多个参数会被封装成一个map key使用Param注解指定的值 value参数值 #{指定的key}取出对应的参数值 POJO 如果多个参数是业务模型中的数据可以直接使用POJO #{属性名}取出传入的POJO 的属性值 Map: 如果多个参数不是业务模型中的数据没有对应的POJO为了方便可以传入map #{key}:取出map中对应的值 TO: 如果多个参数不是业务模型中的数据但是经常要是用推荐来编写一个TOTransfer Object数据传输对象 Page{ int index int size }示例1、public Employee getEmployee(Param(name)String name,String pass); 取值name#{name/param1} pass#{param2}2、public Employee getEmployee(String name,Param(emp)Employee employee); 取值name#{param1} pass#{emp.pass/param2.pass}3、如果是CollectionList Set类型或者是数组型也会特殊处理 也是把传入的list或者数组封装在map中 keyCollection(collection),如果是List还可以使用这个key(list) 数组(array) public Employee getEmpById(ListInteger ids); 取值取出第一个id的值#{list[0]}mybatis处理参数总结参数多时会封装map未了不混乱可以使用Param来指定封装时使用的key#{key}就可以取出map中的值(Param(id)Integer id,Param(name)String name);ParamNameResolver解析参数封装的map names:{0id,1name} 1、获取每个标了param注解的参数的Param的值idname赋值给name 2、每次解析一个参数给map中保存信息(key参数索引valuename的值) name的值 标注了param注解注解值 没有标注 1、全局配置userActualParamjdk1.8:name参数名 2、namemap.size();相当于当前元素索引mybatis参数值的获取#{}可以获取map中的值或者pojo对象属性的值${}: 可以获取map中的值或者pojo对象属性的值区别 #{}是以预编译的形式将参数设置到sql语句中PreparedStatement;防止sql注入 ${}:取出的值直接拼接在sql语句中会由安全问题 大多情况下都会使用#{} 当存在分表、排序按照年份分表拆分 原生jdbc不支持占位符的地方就可以使用${}进行取值 select * from ${year}_salary where xxxx; select * from tb_student order by ${name} #{} 可以规定参数的一些规则 JavaType、jdbcType、mode存储过程、numeriScale、resultMap、typeHandler、jdbcTypeName jdbcType通常需要在某种特定的条件下呗被设置 在数据为null的时候有些数据库可能不能识别mybatis对null的默认处理。 比如Oracle报错 insert into student(id,name,age) values(null,test,null) oracle不能识别对null的操作报错。因为mybatis对所有的null都映射的是原生jdbc的other类型。 但是MySQL可以识别对null的操作若想解决此问题则使用以下添加语句; 1、insert into student(id,name,age) values(#{id},#{name},#{age,jdbcTypeNULL}) 2、由于全局配置中jdbcTypeForNullOTHER:oracle不支持 setting namejdbcTypeForNull valueNULL 此配置对使用MySQL数据库时的影响。返回参数类型List型 resultType返回的是一个集合要写集合中元素的类型Map型 resultType“map”返回一条记录 key:就是列名 value对应的值 mybatis对用到的部分类进行了封装可直接使用封装类型。 返回多条记录封装一个map 1、resultType:要写集合中元素的类型。 MapInteger,Employee: 键是这条记录的主键值是记录封装后的JavaBean 2、在对应的方法上添加MapKey(id) 告诉mybatis封装这个map的时候使用哪个属性作为map的key 转载于:https://www.cnblogs.com/staticking/p/7001091.html