一、getMapper()接口
解析:getMapper()接口 IDept.class定义一个接口,
挂载一个没有实现的方法,特殊之处,借楼任何方法,必须和小配置中id属性是一致的
通过代理:生成接口的实现类名称,在MyBatis底层维护名称$$Dept_abc,selectDeptByNo()
相当于是一个强类型
Eg
第一步:在cn.happy.dao中定义一个接口
package cn.happy.dao; import java.util.List; import cn.happy.entity.Dept; public interface IDeptDao { //查看全部---------getAllDept要和小配置里面的id一样 public List<Dept> getAllDept(); }
第二步:IDept.xml配置小配置
解析:select里面的Id属性要和接口里面的接口方法名一样;mapper的namespace属性包名是cn.happy.dao.IDeptDao接口
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.happy.dao.IDeptDao"> <select id="getAllDept" resultType="cn.happy.entity.Dept"> select * from Dept </select> </mapper>
第三步:测试类
解析:查看全部信息有两种方法
1)session.selectList("cn.happy.dao.IDeptDao.getAllDept");-------实体类.小配置里面的Id名称============字符串
2)IDeptDao mapper = session.getMapper(IDeptDao.class);相当于实现类,getMapper是一个强类型
// 01查看全部信息getMapper()接口类的方法名要和小配置的id一样 @Test public void testSelectAll() { SqlSession session = factory.openSession(); //用的是弱类型========实体类.小配置里面的Id名称============字符串 /*List<Dept> list = session.selectList("cn.happy.dao.IDeptDao.getAllDept"); for (Dept dept : list) { System.out.println(dept.getDeptName()); }*/ // 用getMapper方法HIbernate帮我们在内存中代理出一个接口的实现类======相当于强类型 //mapper是一个实现类对象 IDeptDao mapper = session.getMapper(IDeptDao.class); List<Dept> list = mapper.getAllDept(); for (Dept dept : list) { System.out.println(dept.getDeptName()); }
第四步:全文统一用一个大配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- Alias别名 小配置里面的type的属性值改成别名--> <typeAliases> <typeAlias type="cn.resultMap.enetity.Emp" alias="emp"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> <property name="username" value="sa" /> <property name="password" value="1" /> </dataSource> </environment> </environments> <!--映射文件:描述某个实体和数据库表的对应关系 --> <mappers> <mapper resource="cn/resultMap/enetity/Emp.xml" /> </mappers> </configuration>
二、resultMap标签
解析:使用的场景是当实体类的属性与数据库不匹配的时候需要用到resultMap实体类和数据库的属性必须一致。(之前用的是实体类)
Eg检索所有员工,以及隶属部门
第一步:创建一个接口
package cn.resultMap.dao; import java.util.List; import cn.resultMap.enetity.Emp; public interface IEmpDao { /