package cn.happy.dao;
import java.util.List;
import cn.happy.entity.Dept;
public interface IDeptDao {
//查看全部---------getAllDept要和小配置里面的id一样
public List getAllDept();
}
package cn.resultMap.dao;
import java.util.List;
import cn.resultMap.enetity.Emp;
public interface IEmpDao {
//检索所有员工,以及隶属部门
public List getAllEmps();
}
//resultMap:实体的属性名和表的字段名保证一致用resultMap
//如果报NullException查看小配置的映射关联resultMap是否配置
@Test
public void testAllEmp(){
SqlSession session=factory.openSession();
IEmpDao mapper = session.getMapper(IEmpDao.class);
List allEmps = mapper.getAllEmps();
for (Emp emp : allEmps) {
System.out.println(emp.getEmpName()+"t隶属部门"+emp.getDept().getDeptName());
}
session.close();
}
第四步:在大配置引入小配置
三、提取sql列
解析:Sql标签简化代码量在小配置里面写
d.deptNo,d.deptName
四、Alias别名
解析:在大配置上写,这样的话在小配置就可以引用别名了
五、动态操作
解析:用于实现动态SQL的元素主要有:
if
choose(when,otherwise)
where
set
Eg 查看在北京城市的人员
第一步:接口
package cn.resultMap.dao;
import java.util.List;
import cn.resultMap.enetity.Emp;
public interface IEmpDao {
//检索所有员工,以及隶属部门
public List getAllEmps();
}
第二步:小配
第三步:测试
//动态查询
@Test
public void testSelect(){
SqlSession session=factory.openSession();
Emp emp=new Emp();
//emp.setEmpName("331");
emp.setEmpCity("sh");
List list = session.selectList("cn.resultMap.dao.IEmpDao.testAllEmpBuSelect",emp);
for (Emp emps : list) {
System.out.println(emps.getEmpName());
}
session.close();
}
第四步:在大配置引入小配置
Eg 修改部门信息
第一步:接口
第二步:小配置
select d.*,e.* from Dept d,Emp e
where d.deptNo=e.deptNo and d.deptNo=#{deptNo}
update dept
deptNo=#{deptNo},
deptName=#{deptName},
where deptNo=#{deptNo}
第三步:测试
@Test
public void testUpdate(){
SqlSession session=factory.openSession();
Dept dept=new Dept();
dept.setDeptName("财务部");
dept.setDeptNo(1);
int count = session.update("cn.resultMap.dao.IDeptDao.testUpdate",dept);
session.commit();
System.out.println(count);
session.close();
}