美文网首页
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