标签:put 避免 puts str 实现 代码 安全 uil string
1 public class SessionFactory { 2 public static SqlSession getSqlSession(String resource) throws IOException{ 3 InputStream inputStream = Resources.getResourceAsStream(resource); 4 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 5 SqlSession sqlSession = sqlSessionFactory.openSession(); 6 7 return sqlSession; 8 } 9 }
第4行的代码闻起来就有一个“bad smell”的味道,因为它的作用不是在整个应用范围而是在方法范围。
1 package day_8_mybatis.util; 2 3 import java.io.InputStream; 4 5 import org.apache.ibatis.session.SqlSessionFactory; 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 7 8 /** 9 * @author turbo 10 * 11 * 2016年10月26日 12 */ 13 public class SessionFactory2 { 14 private static SqlSessionFactory sqlSessionFactory; 15 16 public static synchronized SqlSessionFactory getInstance(InputStream inputStream){ 17 if (null == sqlSessionFactory){ 18 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 19 } 20 21 return sqlSessionFactory; 22 } 23 }
客户端创建SqlSession的代码如下:
1 package day_8_mybatis; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 6 import org.apache.ibatis.io.Resources; 7 import org.apache.ibatis.session.SqlSession; 8 9 import day_8_mybatis.util.SessionFactory2; 10 11 /** 12 * 客户端 13 * 14 * @author turbo 15 * 16 * 2016年10月26日 17 */ 18 public class Main { 19 20 /** 21 * @param args 22 * @throws IOException 23 */ 24 public static void main(String[] args) throws Exception { 25 String resource = "day_8_mybatis/mybatis-config.xml"; // 获取mybatis配置文件路径 26 InputStream inputStream = Resources.getResourceAsStream(resource); 27 SqlSession sqlSession = SessionFactory2.getInstance(inputStream).openSession(); 28 29 } 30 31 }
这样的代码是不是就符合标准,并且看起来舒服多,漂亮多了?
SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession作用域(Scope)和生命周期
标签:put 避免 puts str 实现 代码 安全 uil string
原文地址:http://www.cnblogs.com/yulinfeng/p/6002379.html