image.png
    dao.StudentDao(其余代码见上一个文档)

    1. package dao;
    2. import domain.Student;
    3. import org.apache.ibatis.annotations.*;
    4. import java.util.List;
    5. import java.util.Map;
    6. public interface StudentDao {
    7. @Select("select * from student1 where sid = #{sid}")
    8. public Student selectOne(Integer sid);
    9. //接口底层有一个代理类 ProxyStudentDao(对象)
    10. //ProxyStudentDao代理对象帮我的Dao接口执行一个方法 selectOne
    11. // 1.解析方法 类名字 方法名字 方法参数 返回值
    12. // 2.解析mapper.xml文件 namespace 标签中的id SQL上的#{key} 标签中的resultType
    13. // 类名字----找寻namespace
    14. // 方法名字--找寻某一个标签中的id属性
    15. // 进而找到标签中的一条SQL语句
    16. // 方法的参数---与找到的SQL进行key匹配 组合成一条完整的SQL语句(可以执行的)
    17. // 加载驱动
    18. // 获取连接
    19. // 获取状态参数啦
    20. // 拼接SQL
    21. // 执行查询操作ResultSet = executeQuery();
    22. // 将结果集的信息取出来 存入一个新的容器内(容器的类型通过解析xml标签中的resultType属性来的)
    23. // 资源全部关闭
    24. // 将新的容器连同里面的数据返回
    25. // 需要的信息 1.类名字 2.方法名字 3.定位注解在哪里 4.注解里获取一条SQL 5.SQL上面的信息(方法参数)
    26. // 7.执行查询后的返回类型(当前方法的返回值类型) 8.底层执行的方法sqlSession.selectOne();(注解名字)
    27. //查询多条记录
    28. @Select("select * from student1")
    29. public List<Student> selectAll();
    30. }

    联合查询一对一
    image.png
    image.png
    image.png
    image.png

    dao.PersonDao

    1. package dao;
    2. import domain.IDCard;
    3. import domain.Person;
    4. import org.apache.ibatis.annotations.*;
    5. import java.util.List;
    6. public interface PersonDao {
    7. //设计一个方法,根据人的id,查询人的信息+对应身份证信息
    8. @Select("select * from person where pid = #{pid}")
    9. @Results(
    10. id="selectOne",//别的语句可以通过这个id调用规则
    11. value={
    12. @Result(id = true,property = "pid",column = "pid"),//默认false,不是主键
    13. @Result(property = "pname",column = "pname"),
    14. @Result(property = "idCard",javaType = IDCard.class,column = "cardid",
    15. one = @One(select = "selectOneIDCard"))//select中是辅助方法名
    16. })
    17. public Person selectOne(Integer pid);//方法返回值对应的是xml resultMap标签中的type属性
    18. //辅助方法
    19. @Select("select * from idcard where cardid = #{cardid}")
    20. public IDCard selectOneIDCard(String cardid);
    21. //利用原来的xml形式
    22. // 文件中有好多
    23. // 1.namespace----类名
    24. // 2.id-----------方法名
    25. // 3.<select>-----@Select
    26. // 4.标签中一条SQL--注解内有一条SQL
    27. // 5.标签中resultMap-----@Results(自定义规则)
    28. // id id
    29. // result result
    30. // association 对象
    31. // 辅助查询 辅助查询--(一个方法 方法上的注解 SQL)
    32. // 6.两个对象 第二个对象延迟机制 settings设置-----注解里设置
    33. @Select("select * from person")
    34. @ResultMap("selectOne")//调用上面的规则
    35. public List<Person> selectAll();
    36. }