主要内容Mybatis入门实例理论回顾及代码
- Mybatis的其他设置(示例conf.xml)
- Mybatis内置的类型处理器
- 自定义Mybatis类型处理器
- Mybatis内置别名
- Mybatis输入参数说明
- 适合于动态排序例子:
- 模糊查询写法:
- 输入参数为级联属性(例子):
- 输入参数为HashMap(例子):
conf.xml中
Mybatis内置的类型处理器 自定义Mybatis类型处理器
例如:(boolean -> number )
分俩步:
一、创建转换器:需要实现TypeHandler接口,TypeHandler接口有一个实现类 baseTypeHandler ,实现转换器有2种选择:
- 实现接口TypeHandler接口
- 继承baseTypeHandler
二、配置conf.xml
package org.koma.converter; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.baseTypeHandler; import org.apache.ibatis.type.JdbcType; //baseTypeHandlerpublic class BooleanAndIntConverter extends baseTypeHandler { //java中(boolean)->数据库中(number) @Override public void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType) throws SQLException { if(parameter) { //true变1 ps.setInt(i, 1); }else { //false变0 ps.setInt(i, 0); } } //数据库中(number)->java中(boolean) @Override public Boolean getNullableResult(ResultSet rs, String columnName) throws SQLException { int sexNum = rs.getInt(columnName) ;//rs.getInt("stuno") ; return sexNum == 1?true:false ; } @Override public Boolean getNullableResult(ResultSet rs, int columnIndex) throws SQLException { int sexNum = rs.getInt(columnIndex) ;//rs.getInt(1) return sexNum == 1?true:false ; } @Override public Boolean getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { int sexNum = cs.getInt(columnIndex) ;//rs.getInt(1) return sexNum == 1?true:false ; } }
studengtMapper.xml 需要稍加修改:
...Mybatis内置别名 Mybatis输入参数说明select * from student where stuno = #{stuno} ... insert into student(stuno,stuname,stuage,graname,stusex) values(#{stuNo},#{stuName},#{stuAge},#{graName} ,#{stuSex ,javaType=boolean ,jdbcType=INTEGER } ) ...
parameterType类型为 简单类型(8个基本类型+String):#{任意值} 或者
${value} ,其中的标识符只能是value。
parameterType类型为 对象类型,#{属性值},${属性值} ,其中的标识符只能是属性值。
注:#{ } 会自动给String类型加上’’ "(自动类型转换), ${ } 原样输出,但是适合于动态排序(动态字段)。
适合于动态排序例子:注:#{ } 可以防止SQL注入,${ }不防止SQL注入。
模糊查询写法:
输入参数为级联属性(例子):
@Data public class Address { private String homeAddress; private String schoolAddress; }
@AllArgsConstructor @NoArgsConstructor @Data public class Student { private int stuNo ; private String stuName ; private int stuAge ; private String graName ; private boolean stuSex ; private Address address;//家庭、学校(嵌套属性)
输入参数为HashMap(例子):
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)