美文网首页
Mybatis开发Dao的方式(一)

Mybatis开发Dao的方式(一)

作者: 小牛长成记 | 来源:发表于2018-11-25 17:45 被阅读0次

    一、接口加实现类

    public class UserDaoImpl implements IUserDao {
    
        @Override
        public User findUserById(int id) {
            //创建SqlSession
            SqlSession sqlSession = MybatisUtil.getSqlSession();  
            User user = sqlSession.selectOne("test.findUserById", id);
            //关闭资源
            sqlSession.close(); 
            return user;
        }
    
        @Override
        public List<User> findUserByName(String name) {
            //创建SqlSession
            SqlSession sqlSession = MybatisUtil.getSqlSession();  
            List<User> list = sqlSession.selectList("test.findUserByName2", name);
            
            //关闭资源
            sqlSession.close(); 
            return list;
        }
    
        @Override
        public void insertUser(User user) {
            //创建SqlSession
            SqlSession sqlSession = MybatisUtil.getSqlSession();  
            sqlSession.insert("test.insertUser2",user);
            sqlSession.commit(); //手动提交事务,什么时候开启的?
            //关闭资源
            sqlSession.close();
            System.out.println(user.getUid()); //查看刚生成的记录的主键
        }
    }
    
    

    写一个工具类产生sqlSession对象

    public class MybatisUtil {
        
        private static SqlSessionFactory sqlSessionFactory;
        static{
            try {
                String resource = "sqlMapConfig.xml";  //全局配置文件的路径
                InputStream inputStream = Resources.getResourceAsStream(resource);
                //创建SqlSessionFactory
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                throw new ExceptionInInitializerError("初始化错误");
            }
        }
        
        public static SqlSession getSqlSession(){
        //SqlSession,它内部含有一块数据区域,存在线程不安全的问题,所以应该将sqlsession声明到方法内部。
            return sqlSessionFactory.openSession();
        }
    }
    
    

    测试代码

    public class UserDaoImplTest {
        private IUserDao userDao = new UserDaoImpl();
        
        @Test
        public void testFindUserById() {
            User user = userDao.findUserById(2);
            System.out.println(user);
        }
    
        @Test
        public void testFindUserByName() {
            List<User> list = userDao.findUserByName("jiang");
            for(User u:list){
                System.out.println(u);
            }
        }
    
    

    相关文章

      网友评论

          本文标题:Mybatis开发Dao的方式(一)

          本文链接:https://www.haomeiwen.com/subject/dsnpqqtx.html