MyBatis——(6)MyBatis_映射配置文件_参数处理
发布日期:2021-05-07 02:35:48 浏览次数:20 分类:精选文章

本文共 4442 字,大约阅读时间需要 14 分钟。

文章目录

1,单个参数:mybatis不会做特殊处理

#{参数名/任意名}:取出参数值。

按照的思路

我们只需要修改EmployeeMapper.java和EmployeeMapper.xml测试类MyBatisTest.java即可

EmployeeMapper.java

public interface EmployeeMapper {   	public Employee getEmpByName(String name);}

EmployeeMapper.xml

>

MyBatisTest.java

@Test	public void test04() throws IOException{   				SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();		//1、获取到的SqlSession不会自动提交数据		SqlSession openSession = sqlSessionFactory.openSession();				try{   			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);			//单个参数			Employee employee=mapper.getEmpByName("zlj");			System.out.println(employee);		}finally{   			openSession.close();		}	}

结果

在这里插入图片描述

结果我们知道在EmployeeMapper.xml中的查询语句中无论#[]中的值是否是EmployeeMapper.java中传入参数的值,仍然可以查询到结果,因为单个参数:mybatis不会做特殊处理

2,多个参数:mybatis会做特殊处理。

多个参数会被封装成 一个map,

keyparam1…paramN,或者参数的索引也可以
value传入的参数值
#{}就是从map中获取指定的key的值;

EmployeeMapper.java

public interface EmployeeMapper {   	public Employee getEmpByIdAndLastName1(Integer id,String lastName);	public Employee getEmpByIdAndLastName2(@Param("id")Integer id,@Param("lastName")String lastName);	public Employee getEmpByIdAndLastName3(Integer id,String lastName);}

EmployeeMapper.xml

>

MyBatisTest.java

@Test	public void test04() throws IOException{   				SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();		//1、获取到的SqlSession不会自动提交数据		SqlSession openSession = sqlSessionFactory.openSession();				try{   			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);			//多个参数			Employee employee2=mapper.getEmpByIdAndLastName2(1, "zlj");			System.out.println(employee2);			Employee employee3=mapper.getEmpByIdAndLastName3(1, "zlj");			System.out.println(employee3);			Employee employee1=mapper.getEmpByIdAndLastName1(1, "zlj");			System.out.println(employee1);		}finally{   			openSession.close();		}	}

结果

在这里插入图片描述

结果可知道多个参数传进,多个参数会被封装成 一个map

key——》param1…paramN,或者参数的索引也可以
value——》:传入的参数值(#{param1})
#{}就是从map中获取指定的key的值;
多个参数:mybatis会做特殊处理

异常:

org.apache.ibatis.binding.BindingException:
Parameter ‘id’ not found.
Available parameters are [1, 0, param1, param2]
操作:
方法: public Employee getEmpByIdAndLastName1(Integer id,String lastName);
取值:#{id},#{lastName}
如上操作就会报上述异常

3,命名参数 :明确指定封装参数时map的key;@Param(“id”)

多个参数会被封装成 一个map,

key:使用@Param注解指定的值
value:参数值
#{指定的key}取出对应的参数值
在上述中已经提到代码演示,这里不再赘述

4,POJO

如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo;

#{属性名}:取出传入的pojo的属性值

EmployeeMapper.java

public interface EmployeeMapper {   //以下测试POJO演示	public Employee getEmpByPOJO(Employee employee);

EmployeeMapper.xml

>

MyBatisTest.java

@Test	public void test04() throws IOException{   				SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();		//1、获取到的SqlSession不会自动提交数据		SqlSession openSession = sqlSessionFactory.openSession();				try{   			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);			//POJO演示			Employee employee=new Employee(1,"zlj","22.@qq","add");			Employee employee2=mapper.getEmpByPOJO(employee);			System.out.println(employee2);		}finally{   			openSession.close();		}	}

结果

在这里插入图片描述

结果说明,如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo;

#{属性名}:取出传入的pojo的属性值

5,Map

如果多个参数不是业务模型中的数据,没有对应的pojo,不经常使用,为了方便,我们也可以传入map

#{key}:取出map中对应的值

EmployeeMapper.java

public interface EmployeeMapper {   //以下测试Map演示	public Employee getEmpByMap(Map
map);}

EmployeeMapper.xml

>

MyBatisTest.java

@Test	public void test04() throws IOException{   				SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();		//1、获取到的SqlSession不会自动提交数据		SqlSession openSession = sqlSessionFactory.openSession();				try{   			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);			//Map演示			Map
map = new HashMap<>(); map.put("id", 2); map.put("lastName", "Tom"); map.put("tableName", "employee"); Employee employee = mapper.getEmpByMap(map); System.out.println(employee); }finally{ openSession.close(); } }

结果

在这里插入图片描述

结果说明我们成功传入了map的值,#{key}:取出map中对应的值

6,参数值的获取

7,#{}:更丰富的用法

上一篇:MyBatis——小知识:MyBatis_映射配置文件_参数值获取
下一篇:MyBatis——(5)MyBatis_映射配置文件_增删改查以及获取自增主键值

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月27日 15时09分35秒