非spring容器下如何使用Mybatis

非 spring 容器下如何使用 mybatis ?
  1. 构建 maven 环境
        
		
			mysql
			mysql-connector-java
			5.1.45
		
		
		
		
			org.mybatis
			mybatis
			3.4.6
		
  1. 配置文件
    resources目录下面 configuration.xml 文件,mybatis 核心配置文件文件



    
    
        
            
            
                
                
                
                
            
        
    

    
    
        
    

resources目录下面 UserMapper.xml 文件,测试 UserMapper 文件





    
        insert into user(username,password) value(#{username,jdbcType=CHAR},#{password,jdbcType=CHAR})
    

    


  1. 数据库表对应pojo model类 User
public class User {
    private long id;
    private String username;
    private String password;
    
    ...getter setter
}
  1. Mapper api 接口
public interface UserMapper {
    int insertUser(User user);
    List selectUser();
}
  1. 测试类 main 方法
    public static void main(String[] args) throws Exception {
        // 定义配置文件,相对路径,文件直接放在resources目录下
        String resource = "configuration.xml";
        // 读取文件字节流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        
        // mybatis 读取字节流,利用XMLConfigBuilder类解析文件
        // 将xml文件解析成一个 org.apache.ibatis.session.Configuration 对象
        // 然后将 Configuration 对象交给 SqlSessionFactory 接口实现类 DefaultSqlSessionFactory 管理
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        
        // openSession 有多个重载方法, 比较重要几个是 
        // 1 是否默认提交 SqlSession openSession(boolean autoCommit)
        // 2 设置事务级别 SqlSession openSession(TransactionIsolationLevel level)
        // 3 执行器类型   SqlSession openSession(ExecutorType execType)
        SqlSession sqlSession = sqlSessionFactory.openSession();
        
        // mybatis 内部其实已经解析好了 mapper 和 mapping 对应关系,放在一个map中,这里可以直接获取
        // 如果看源码可以发现userMapper 其实是一个代理类MapperProxy,
        // 通过 sqlSession、mapperInterface、mechodCache三个参数构造的
        // MapperProxyFactory 类中 newInstance(MapperProxy mapperProxy)方法
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        /* insert */
        User user = new User();
        user.setUsername("LiuYork");
        user.setPassword("123456");
        userMapper.insertUser(user);
        // 由于默认 openSession() 事务是交由开发者手动控制,所以需要显示提交
        sqlSession.commit();

        /* select */
        List<User> users = userMapper.selectUser();
        
        sqlSession.close();
    }
  1. mysql需要创建一个数据库,然后创建一个user表,这里的主键id是默认自增的
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) DEFAULT NULL,
  `password` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

案例参考 mybatis GitHub 官网使用手册

GitHub 参考文档

你可能感兴趣的:(mybatis)