自动创建Mapper对象的实现类

  1. 首先要有一个mybatis的配置文件mybatis-config.xml,这个文件可以去官方文档里找(我没找过)
  2. 用getResourceAsStream这个流读取这个配置文件
    SqlSessionFactoryBuilder.build(流),这样就会创建一个SqlSessionFactory类
  3. 用SqlSessionFactoryr这个类的openSession()方法就可以得到这个SqlSession
  4. 然后SqlSession用getMapper(类名.class)就可以得到了实现类对象
    下面是封装了这个sqlSessionFactory对象
	private static SqlSessionFactory sqlSessionFactory;
	
	public static SqlSessionFactory getSqlSessionFactory(){
		if(sqlSessionFactory == null){
			InputStream inputStream = null;
			try {
				inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException(e.getCause());
			}
		}
		return sqlSessionFactory;
	}
	
	public static SqlSession openSession() { 
		return openSession(false); 
	}
	public static SqlSession openSession(boolean autoCommit) { 
		return getSqlSessionFactory().openSession(autoCommit); 
	}

然后调用这个类的方法就能得到sqlsession对象
这个工厂对象还可以指定我们要根据那个环境配置这个工厂
在配置文件中有environments标签,可以配置不同的环境,再build这个方法的第二个参数中加上这个environment的id就行了,build这个方法重载了

这是可以切换环境的代码

cartSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, "shoppingcart"); 

这是在外面通过我们封装的工具类生成sqlsession对象创建mapper实现类的代码

SqlSession openSession = MyBatisSqlSessionFactory.openSession();
CustomerMapper mapper = openSession.getMapper(CustomerMapper.class);

感觉自己写的好乱,感觉只有自己明白自己在干嘛,哈哈哈,我以后会好好写的


版权声明:本文为weixin_42495807原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。