mybatis02
测试接口绑定方案:
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提供的别名设置占位符的名字
可以解决多参数传递的问题
自定义映射关系
/p>
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select empno,ename,job,mgr,sal,comm,hiredate,deptno from emp
public interface UserMapper {
/*查询用户信息查询所有得到用户信息根据用户名查询根据用户密码根据用户名和用户密码同时查询用户信息*/
public List queryUser(@Param("username") String username,@Param("password") Integer password);
/*修改数据根据id修改用户数据根据id修改用户名修改用密码修改用户名和用户密码*/
int updateUser(@Param("id")Integer id,@Param("username") String username,@Param("password") Integer password);
/*修改数据根据id修改用户数据如果存在用户名就根据修改用户名用户名不存在,就修改用户密码两个都不存在就不修改*/
int updateUser2(@Param("id")Integer id,@Param("username") String username,@Param("password") Integer password);
int updateUser3(@Param("id")Integer id,@Param("username") String username,@Param("password") Integer password);
// 根据用户名模糊查询用户信息 public List queryUserByNameLike(@Param("str") String str);
}
当传入参数大于一个时可以通过添加注解来为对象赋值@param
trim标签
/*if 判定标签test 属性中: 定义判定条件可以直接根据@Param() 中定义的参数名匹配方法的实参*/
/*判断用户名是否不为null并且也不为空串 */
/*where:如果标签where标签对中存在条件,拼接一个where关键字如果标签对中没有条件,就不拼接where关键字如果存在条件,会帮你把第一个条件前面的and关键字去掉*/
update t_user
username = #{username},
password = #{password},
id = #{id}
通过自定义映射关系实现多表查询
select empno,ename,job,mgr,sal,comm,hiredate,emp.deptno,dname,loc from emp left join dept on emp.deptno = dept.deptno
关系映射查询
多表联查:
1) 中间类
2) resultMap
一对一|多对一 :
查询所有的学生信息以及所在的班级信息
代码:
一端类中存在另一个类型的成员
学生类中存在班级类型的成员 | 员工类型中存在部门类型的成员
多的一方存在一的一方的成员
resultMap
一对多 : 查询所有的班级以及班级中的学生信息
代码: 在一的一方存在多的一方的List集合
班级类中存在一个成员List
resultMap