欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBaits总结(十四)--MyBatis_映射文件_参数处理_POJO&Map&TO

程序员文章站 2022-05-13 21:17:05
...

代码来自: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_映射文件_参数处理_其他入参情况了解