传统DAO方式的执行分析
-
首先看测试类中的代码,我们发现由studentDAO对象调用的insertStudnet()方法就是由StudnetDao.xml中的对应insert标签中id+""中所写的类名.
<insert id="insertStudent"> insert into student value (#{id},#{name},#{email},#{age}) </insert>
-
我们可以发现,前面两个测试类的代码有很多重复的地方(为了观察方便我们把上面的代码粘过来进行分析):
public class StundentDaoImpl implements StudentDao { @Override public List<Student> selectStudents() { //获取sqlsession对象 SqlSession sqlSession = MyBatisUtils.getSqlSession(); String sqlId = "com.bipt.dao.StudentDao.selectStudents"; //执行sql语句 List<Student> students = sqlSession.selectList(sqlId); //关闭sqlSession对象 sqlSession.close(); return students; } @Override public int insertStudent(Student student) { SqlSession sqlSession = MyBatisUtils.getSqlSession(); String sqlId = "com.bipt.dao.StudentDao.insertStudent"; int unm = sqlSession.insert(sqlId,student); sqlSession.commit(); sqlSession.close(); return unm; } }
-
调用工具类获取sqlSession对象的步骤是重复的.
-
sqlSession对象的关闭是重复的.
-
selectStudnet方法中sqlSession对象调用的是sqlSession的selectList(String)方法
insertStudent方法中sqlSession对象调用的是sqlSession的insert(Sting,Object)方法
-
sqlId的唯一标识字符串中只有com.bipt.dao.StudentDao.( ) -->括号中的内容是发生改变的
由此我们可以发现,在方法的实现内部中,有很多的代码都是重复的,或者是有规律可循的,如果我们抓住这个规律为我们所有,那我们能够让mybatis的操作更简单一点呢?不用再写这么多重复的代码呢?
答案是可以的~~~
请看下一节: 传统DAO方式的执行分析 -