简化代码
将BookServiceImpl的代码简化
在util包内加入MyBatisUtil
package com.nz.util; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil { private static SqlSessionFactory factory; //保证service层 进行多次dao操作,公用一个SqlSession对象 private static ThreadLocal<SqlSession> tl = new ThreadLocal<SqlSession>(); static{ try { String resouce = "mybatis-config.xml"; //代表总配置文件的路径 InputStream is = Resources.getResourceAsStream(resouce);//使用输入流读取配置文件 factory = new SqlSessionFactoryBuilder().build(is);//facotry只需要创建一个 } catch (Exception e) { e.printStackTrace(); } } public static SqlSession getSqlSession(){ SqlSession session = tl.get(); if(session == null) { session = factory.openSession(); tl.set(session); } return session; } //关闭的方法 public static void close(){ SqlSession session = tl.get(); if(session != null){ session.close(); tl.set(null); } } }
BookServiceImpl简化成:
public class BookServiceImpl implements BookService { //查询 public List<Book> queryList() { //获得sqlSession SqlSession sqlSession = MyBatisUtil.getSqlSession(); //获取dao对象 session 代理 //BookDao.class就是BookDao的类名 BookDao bookDao = sqlSession.getMapper(BookDao.class); List<Book> list = bookDao.selectList(); //关闭session MyBatisUtil.close(); //反参 return list; } //插入 @Override public Boolean addBook(String bookName,String bookAuth,String bookBrief) { //获得sqlSession SqlSession sqlSession = MyBatisUtil.getSqlSession(); //获得dao层对象 代理 BookDao bookDao = sqlSession.getMapper(BookDao.class); //执行方法 int i = bookDao.insertBook( bookName, bookAuth, bookBrief); if(i>0){ sqlSession.commit(); return true; } //反参 return false; } //删除 @Override public boolean removeBook(int id) { //获得sqlSession SqlSession sqlSession = MyBatisUtil.getSqlSession(); //获得dao层对象 代理 BookDao bookDao = sqlSession.getMapper(BookDao.class); //执行方法 int i = bookDao.deleteBook(id); if(i>0){ sqlSession.commit(); return true; } //反参 return false; } //修改 @Override public boolean changeBook(Book book) { //获得sqlSession SqlSession sqlSession = MyBatisUtil.getSqlSession(); //获得dao层对象 代理 BookDao bookDao = sqlSession.getMapper(BookDao.class); //执行方法 int i = bookDao.updateBook(book); if(i>0){ sqlSession.commit(); return true; } //反参 return false; } }