测试接口绑定方案:
1.要求接口与所对应的xml映射文件处于同一包下,并且文件名字保持一致
2.sql映射文件的命名空间namespace 要求设置为所对应的接口的权限定名 包名.类名 com.xxxx.mapper.EmpMapper
3.sql映射文件中sql语句标签的id值要与对应的借口中的对应的抽象方法的方法名称保持一致
4.抽象方法的参数类型与返回值类型要求与对应的sql标签的入参与结果类型保持一致
5.当存在 多参数传递问题,sql语句中的占位符的名字只能默认为:[arg1, arg0, param1, param2]
6.如果想要占位符的名字匹配方法的参数名 可以使用@Param("参数的别名"),这时候在sql中就可以根据Param提供的别名设置占位符的名字
可以解决多参数传递的问题
//新增
int insertEmp(Emp emp);
//修改
int updateEmp(Emp emp);
//删除
int deleteEmp(int empno);
//批量操作
//批量删除
//根据多个id同时删除员工信息
int deleteEmpSome(List<Integer> list);
//批量修改
int updateEmpSome(List<Emp> list);
//批量插入
int insertEmpSome(List<Emp> list);
<!--新增-->
<insert id="insertEmp" parameterType="emp">
insert into emp(empno,ename,deptno) values(#{empno},#{ename},#{deptno}) /*当参数为javabean,占位符的名字 自动匹配对象的属性名*/
</insert>
<!--修改-->
<update id="updateEmp" parameterType="emp">
update emp set ename = #{ename} where empno = #{empno}
</update>
<!--删除-->
<delete id="deleteEmp" parameterType="int">
delete from emp where empno = #{id}
</delete>
<!--批量删除-->
<delete id="deleteEmpSome" parameterType="list">
delete from emp where empno in(
<foreach collection="list" item="item" separator=",">
#{item}
</foreach>
)
</delete>
<!--批量修改-->
<update id="updateEmpSome" parameterType="list">
<foreach collection="list" item="item" open="begin" close=";end;" separator=";">
update emp set ename =#{item.ename} where empno =#{item.empno}
</foreach>
</update>
<!--批量插入-->
<insert id="insertEmpSome" parameterType="list">
insert into emp
(empno, ename, deptno)
<foreach collection="list" item="item" separator="union">
select #{item.empno}, #{item.ename},#{item.deptno} from dual
</foreach>
</insert>
//添加
Emp emp = new Emp();
emp.setEmpno(6789);
emp.setEname("wangwu");
emp.setDeptno(20);
int row = mapper.insertEmp(emp);
System.out.println(row);
//修改
Emp emp = new Emp();
emp.setEmpno(8888);
emp.setEname("张三丰");
System.out.println(mapper.updateEmp(emp));
//删除
System.out.println(mapper.deleteEmp(7777));
//批量删除
mapper.deleteEmpSome(List.of(6666,7777));
//批量修改
mapper.updateEmpSome(List.of(
new Emp(8888,"张三"),
new Emp(9999,"hehe")
));
//批量插入
mapper.insertEmpSome(List.of(
new Emp(8888,"asdf",40),
new Emp(9999,"qwer",30)
));