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



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