jdbc
jdbc 主要作用是获取数据源,获得查询结果。存在的问题是需要手写 sql,对结果集处理麻烦,mybatis 主要解决这个两个问题
// 1.加载类,并注册驱动器(Driver会注册到DriverManager中) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); // 2.根据特定的URL,返回可以接受此URL的数据库驱动对象 Driver driver = DriverManager.getDriver(URL); // 3.使用数据库驱动创建数据库连接Connection会话 connection = driver.connect(URL, props); // 4.获得Statement对象 statement = connection.createStatement(); // 5.执行 sql语句,返回结果 resultSet = statement.executeQuery("select * from emp");
mybatis
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.xx.dao"/> <property name="sqlSessionFactoryBeanName" value="sessionFactory"/> <property name="annotationClass" "value=""com.selfdefine.MyDataSource"/> </bean>MapperScannerConfigurer 中 annotationClass 指定了数据源注解名称,使用 @MyDataSource 注解的 Mapper 文件才会被这个实例处理,可以配置多个 MapperScannerConfigurer,分别处理不同的数据源。basePackage 指定了 MapperScannerConfigurer 扫描的范围,sqlSessionFactoryBeanName 表示使用的数据源。
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) { if (this.processPropertyPlaceHolders) { processPropertyPlaceHolders(); } ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry); scanner.setAddToConfig(this.addToConfig); scanner.setAnnotationClass(this.annotationClass); scanner.setMarkerInterface(this.markerInterface); scanner.setSqlSessionFactory(this.sqlSessionFactory); scanner.setSqlSessionTemplate(this.sqlSessionTemplate); scanner.setSqlSessionFactoryBeanName(this.sqlSessionFactoryBeanName); scanner.setSqlSessionTemplateBeanName(this.sqlSessionTemplateBeanName); scanner.setResourceLoader(this.applicationContext); scanner.setBeanNameGenerator(this.nameGenerator); scanner.registerFilters(); scanner.scan(StringUtils.tokenizeToStringArray(this.basePackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS)); }扫描出的 mapper 接口文件,全部被实例化为 MapperFactoryBean MapperFactoryBean 是一个 initalizaingBean,它是 Daosupport 子类
MapperFactoryBean 子类实现,下面分析 addMapper 方法
标签:分析,jdbc,MapperFactoryBean,scanner,URL,数据源,mybatis From: https://www.cnblogs.com/wudeyun/p/16828394.html