Mybatis中输入参数说明及其他配置

Mybatis中输入参数说明及其他配置,第1张

Mybatis中输入参数说明及其他配置

Mybatis入门实例理论回顾及代码

主要内容
    • Mybatis的其他设置(示例conf.xml)
    • Mybatis内置的类型处理器
    • 自定义Mybatis类型处理器
    • Mybatis内置别名
    • Mybatis输入参数说明
        • 适合于动态排序例子:
        • 模糊查询写法:
        • 输入参数为级联属性(例子):
        • 输入参数为HashMap(例子):

Mybatis的其他设置(示例conf.xml)

conf.xml中




	
	

	

 	
	
		
		
		
	
	
	
	
		
	

	
	
		
		
			
			   
				
				 
				
					
					
					
					
					
					
				
		
	
	
		
		
	

Mybatis内置的类型处理器

自定义Mybatis类型处理器

例如:(boolean -> number )

实体类Student数据库表student字段 boolean stuSex字段 number stuSextrue:男,false:女1:男,0:女

分俩步:

一、创建转换器:需要实现TypeHandler接口,TypeHandler接口有一个实现类 baseTypeHandler ,实现转换器有2种选择:

  1. 实现接口TypeHandler接口
  2. 继承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;

//baseTypeHandler
public 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 需要稍加修改:

	...
		
		
			select * from student where stuno = #{stuno}
		
	
		
		
				
				
				
				
				
				
		
	...

		
		
			insert into student(stuno,stuname,stuage,graname,stusex) values(#{stuNo},#{stuName},#{stuAge},#{graName} ,#{stuSex ,javaType=boolean ,jdbcType=INTEGER } ) 
		
		...
Mybatis内置别名

Mybatis输入参数说明

parameterType类型为 简单类型(8个基本类型+String):#{任意值} 或者
${value} ,其中的标识符只能是value。

	 
		select stuno,stuname,stuage  from student where stuage= #{stuAge}  or stuname like '%${stuName}%' 
	

注:#{ } 会自动给String类型加上’’ "(自动类型转换), ${ } 原样输出,但是适合于动态排序(动态字段)。

注:#{ } 可以防止SQL注入,${ }不防止SQL注入。

适合于动态排序例子:
	 
		select stuno,stuname,stuage  from student where stuage= #{stuAge}  or stuname like '%${stuName}%' 
	
输入参数为级联属性(例子):

@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;//家庭、学校(嵌套属性)
	
	 
		select stuno,stuname,stuage  from student  where stuage= #{stuAge}  or stuname like '%${stuName}%' 
	
	

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5590771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存