本文接上文:https://www.cnblogs.com/wushenjiang/p/12451977.html
2.向dao实现类中注入SqlSessionFactory,在方法体内通过SqlSessionFactory创建SqlSession。
public interface UserDao {
    
    //根据id查询用户信息
    public User findUserById(int id) throws Exception;
    //添加用户信息
    public void insertUser(User user) throws Exception;
    //删除用户信息
    public void deleteUser(int id) throws Exception;
}dao实现类:
    //需要向dao实现类中注入SqlSessionFactory
    //这里通过构造方法注入
    private SqlSessionFactory sqlSessionFactory;
    public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
            this.sqlSessionFactory = sqlSessionFactory;
    }
    @Override
    public User findUserById(int id) throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = sqlSession.selectOne("test.findUserById",id);
        //释放资源
        sqlSession.close();
        return  user;
        
    }
    @Override
    public void insertUser(User user) throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行插入操作
        sqlSession.insert("test.insertUser",user);
        //执行提交事务
        sqlSession.commit();
        //释放资源
        sqlSession.close();
        
        
    }
    @Override
    public void deleteUser(int id) throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        sqlSession.delete("test.deleteUser",id);
        //执行提交事务
        sqlSession.commit();
        //释放资源
        sqlSession.close();
        
    }
        测试代码(使用Junit进行单元测试)
public class UserDaoImplTest {
    private SqlSessionFactory sqlSessionFactory;
    @Before
    public void setUp() throws Exception {
        // 创建sqlSessionFactory
        // mybatis配置文件
        String resource = "SqlMapConfig.xml";
        // 得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 创建会话工厂,传入mybatis的配置文件信息
        sqlSessionFactory = new SqlSessionFactoryBuilder()
                .build(inputStream);
    }
    @Test
    public void testFindUserById() throws Exception {
        // 创建UserDao的对象
        UserDao userDao = new UserDaoImpl(sqlSessionFactory);
        // 调用UserDao的方法
        User user = userDao.findUserById(1);
        
        System.out.println(user);
    }
需要遵守一定的开发规范.
1.在mapper.xml中namespace等于mapper接口地址

例:


需要在SqlMapConfig.xml中加载mapper.xml

测试代码:
    @Test
    public void testFindUserByName() throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 创建Usermapper对象,mybatis自动生成mapper代理对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> list = mapper.findUserByName("赵");
        System.out.println(list);
        sqlSession.close();
    }mapper接口方法比起原始Dao接口方法要灵活的多,因此建议在开发中尽量使用mapper接口方法来实现.
可以加载来自其他配置文件,以降低程序的耦合性。如我们可以将数据库配置单写一个properties,然后在SqlMapConfig.xml中读取它,如图:


建议: 不要在properties元素体中添加任何属性值,只将属性值定义在properties文件中。在properties文件中定义属性名要有一定的特殊性,如XXXX.XXX
可用于调整mybatis框架的一些运行参数,如开启二级缓存、开启延迟加载等
在mybatis中,自带了许多别名,如图:

但在开发中,我们也可以将自己的pojo类自定义一个别名以方面我们的使用:
单个定义:

批量定义:(常用)

mappers主要用来加载映射文件,我们有三种加载方式:
1.通过resource加载单个映射文件:

2.通过mapper接口加载单个映射文件(前提是使用mapper代理方法)

3.批量加载mapper(推荐使用)

原文:https://www.cnblogs.com/wushenjiang/p/12506992.html