14、Mybatis进阶:MyBatis_映射文件_参数处理_POJO&Map&TO

代码来自:MyBatis总结(十三)--参数处理_单个参数&多个参数&命名参数

本文内容来自尚硅谷

MyBatis总结(十三)--参数处理_单个参数&多个参数&命名参数中多个参数时解决办法是通过在dao中使用注释给每个参数命名的方式来解决问题。下面提供更加好的更精确的方式来解决问题

目录

1如果入参是多个参数且都是业务逻辑的数据模型,则我们可以直接传入POJO

1、 1Junit写法如下;

1、 2映射文件如下;

2如果入参是多个参数,且不是业务模型中的数据(及没有对应的POJO),不经常使用。这时传入map对象就可以了

2、 1Junit写法如下;

2、 2dao文件如下;

2、 3映射文件如下;

3如果入参是多个参数且经常使用如分页操作,可以使用一个dto对象使


1如果入参是多个参数且都是业务逻辑的数据模型,则我们可以直接传入POJO

1.1Junit写法如下

	public void test03() throws IOException{
		
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		//1、获取到的SqlSession不会自动提交数据
		SqlSession openSession = sqlSessionFactory.openSession();
		
		try{
			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
			//测试添加
			Employee employee = new Employee(null, "jerry4",null, "1");
			mapper.addEmp(employee);
			System.out.println(employee.getId());
			openSession.commit();
		}finally{
			openSession.close();
		}
		
	}

1.2映射文件如下

	<insert id="addEmp" databaseId="oracle">
		<selectKey keyProperty="id" order="AFTER" resultType="Integer">
			 select EMPLOYEES_SEQ.currval from dual
		</selectKey>
 
		insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL) 
		values(employees_seq.nextval,#{lastName},#{email})
	</insert>

2如果入参是多个参数,且不是业务模型中的数据(及没有对应的POJO),不经常使用。这时传入map对象就可以了

2.1Junit写法如下

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

2.2dao文件如下

	public Employee getEmpByMap(Map<String, Object> map);

2.3映射文件如下

 	<!-- public Employee getEmpByMap(Map<String, Object> map); -->
 	<select id="getEmpByMap" resultType="com.atguigu.mybatis.bean.Employee">
 		select * from ${tableName} where id=${id} and last_name=#{lastName}
 	</select>

3如果入参是多个参数且经常使用如分页操作,可以使用一个dto对象使

这里暂时不举例子

更多入参情况可参考MyBatis总结(十五)--MyBatis_映射文件_参数处理_其他入参情况了解

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: