当前位置: 首页 > news >正文

互联网公司网站建设ppt模板datadata.asp 网站 破解

互联网公司网站建设ppt模板,data,data.asp 网站 破解,有什么做旅游攻略的网站,拍卖行 网站建设01 什么是MyBatis、Spring#xff1f;MyBatis是什么#xff1f;它是一个SQL Mapping框架#xff0c;它是一个持久化技术框架。再说得简单一点#xff0c;它只不过是一个操作数据库的框架。Spring是什么#xff1f;Spring就是一个大容器#xff0c;不管是IoC还是AOP#…01 什么是MyBatis、SpringMyBatis是什么它是一个SQL Mapping框架它是一个持久化技术框架。再说得简单一点它只不过是一个操作数据库的框架。Spring是什么Spring就是一个大容器不管是IoC还是AOP都是以Spring容器为基础的因此Spring不管整合什么框架其关键都是利用Spring容器来管理其他框架的核心组件。那么MyBatis编程的核心组件是什么就是以下三个SqlSessionFactoryMapper组件SqlSession02 Java EE应用后端各层组件此外Java EE应用的后端大致可分为如图所示的几层。Java EE应用后端分层Java EE应用后端各层组件的大致功能如下。DAOData Access Object层本层组件主要负责操作数据库因此各种持久化技术如MyBatis、JPA等、索引技术如Lucene、Solr等主要集中在该层。Service层本层组件主要负责业务逻辑实现该层组件向下依赖于DAO层的持久化功能向上对控制器组件提供服务。控制器层本层组件主要负责分发、处理请求该层组件向下依赖于Service层的业务逻辑功能。控制器组件既可对外提供RESTful API接口也可直接与视图技术结合生成Web页面。Spring框架是一个大容器它的作用就是负责创建并管理容器中的所有DAO组件、Service组件、控制器组件等并负责将DAO组件注入Service组件将Service组件注入控制器组件。MyBatis实现DAO组件的方式有两种传统的基于SqlSession实现DAO组件。使用Mapper组件充当DAO组件。不管采用哪种方式在整合Spring之后都会将DAO组件纳入Spring容器管理之下并为DAO组件注入它所依赖的资源。比如基于SqlSession的DAO组件需要依赖SqlSession而Mapper组件则需要依赖SqlSessionFactory—Spring会负责将SqlSessionFactory或SqlSession注入DAO组件。此外既然DAO组件和Service组件都在Spring容器管理之下那么Spring容器也会将DAO组件注入Service组件。归纳起来在MyBatis整合Spring之后Spring可为MyBatis完成如下事情。Spring容器负责管理SqlSessionFactory。Spring容器负责创建、管理Mapper组件或DAO组件。Spring容器负责将Mapper组件或DAO组件注入Service组件。Spring容器负责为Mapper组件或DAO组件注入所依赖的SqlSessionFactory或SqlSession。Spring的AOP机制还可负责管理Service层的事务。03 快速入门Spring与MyBatis的整合示例在开始整合之前需要先下载MyBatis与Spring整合的插件该插件由MyBatis团队提供不是由Spring提供的MyBatis官网提供了一个MyBatis-Spring项目该项目用于支持MyBatis与Spring的整合。登录 链接9 站点下载MyBatis-Spring的最新版本不要下载1.x系列的最新版本1.x支持Spring 3.2及以上版本和Java 1.6及以上版本要下载2.x系列2.x支持Spring 5.0及以上版本和Java 1.8及以上版本本书下载的是MyBatis-Spring 2.0.2下载完成后得到一个mybatis-spring-2.0.2.jar文件它就是MyBatis整合Spring的插件JAR包。此外既然要让Spring整合MyBatis那么当然还需要为项目添加Spring的21个JAR包以及MyBatis的核心JAR包mybatis-3.5.2.jar。接下来按照前面介绍的方式开发Mapper组件Mapper接口XML Mapper或注解。下面是Mapper接口的代码。public interface BookMapper {int saveBook(Book book);Book getBook(int id); } 该Mapper组件对应的XML Mapper映射文件如下。?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespaceorg.crazyit.app.dao.BookMapperinsert idsaveBookinsert into book_inf values(null, #{title}, #{author}, #{price})/insertselect idgetBook resultTypebookselect book_id id, book_title title, book_author author,book_price price from book_inf where book_id#{id}/select /mapper 为了更好地模拟Java EE应用的架构本示例也为应用提供了Service组件接口实现类。下面是BookService接口的代码。public interface BookService {int saveBook(Book book);Book getBook(int id); } 可能有读者感到疑惑该Service组件内定义的两个方法与DAO组件内定义的两个方法是完全相同的吗此时确实是这样的这是由于本例只是一个演示技术的示例它不涉及业务逻辑。对于实际项目而言Service组件的每个方法应该负责处理、实现一个业务逻辑功能这个业务逻辑功能通常需要组合调用多个DAO组件的方法—具体来说比如实现一个转账逻辑该Service方法要调用DAO组件修改转出账户的余额还要修改转入账户的余额还要调用DAO组件插入一条转账记录。总之实现一个业务逻辑方法通常需要按顺序调用多个DAO组件的方法。本示例的Service组件很简单它不涉及任何业务功能因此它的每个方法只要调用一次DAO组件的方法即可。下面是该Service组件的实现类。public class BookServiceImpl implements BookService {private BookMapper bookMapper;//依赖注入Mapper组件所需的setter方法public void setBookMapper(BookMapper bookMapper){this.bookMapper bookMapper;}Overridepublic int saveBook(Book book) {return bookMapper.saveBook(book);}Overridepublic Book getBook(int id) {return bookMapper.getBook(id);} } 该Service组件定义了BookMapper变量代表它所依赖的DAO组件。为了让Spring容器为Service组件注入它所依赖的DAO组件程序还为该DAO组件提供了setter方法—如果Service组件需要调用多个DAO组件的方法就为每个DAO组件都定义对应的成员变量并提供setter方法即可。至此本示例的Mapper组件DAO组件和Service组件都已开发完成。接下来需要将它们配置在Spring容器中并让Spring容器来管理它们之间的依赖关系。下面是本示例的Spring配置文件。?xml version1.0 encodingutf-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:phttp://www.springframework.org/schema/p xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd !-- 定义数据源Bean使用C3P0数据源实现 -- bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSource destroy-methodclose p:driverClasscom.mysql.cj.jdbc.Driver p:jdbcUrljdbc:mysql://localhost:3306/spring?serverTimezoneUTC p:userroot p:password32147/ !-- 配置MyBatis的核心组件SqlSessionFactory并为该SqlSessionFactory配置它依赖的DataSource还指定将类加载路径下的mybatis-config.xml文件作为MyBatis的核心配置文件 -- bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean p:dataSource-refdataSource p:configLocationclasspath:mybatis-config.xml/ !-- 使用MapperFactoryBean工厂Bean配置Mapper组件并为该Mapper组件配置它所依赖的SqlSessionFactory -- bean idbookMapper classorg.mybatis.spring.mapper.MapperFactoryBean p:mapperInterfaceorg.crazyit.app.dao.BookMapper p:sqlSessionFactory-refsqlSessionFactory/ !-- 配置Service组件并为该Service组件配置它所依赖的Mapper组件 -- bean idbookService classorg.crazyit.app.service.impl.BookServiceImpl p:bookMapper-refbookMapper/ /beans 上面配置文件中一共配置了4个Bean其中第一个Bean是一个基于C3P0的数据源Bean这与前面配置的数据源Bean并没有任何区别。第二个Bean是SqlSessionFactoryBean它是一个工厂Bean它负责配置MyBatis的核心组件SqlSessionFactory。配置SqlSessionFactory为它注入了两个属性dataSource和configLocation其中configLocation指定MyBatis的核心配置文件本示例指定使用类加载路径下的mybatis-config.xml作为MyBatis的核心配置文件。该文件的代码如下。?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configuration typeAliases !-- 为org.crazyit.app.domain包下的所有类指定别名 -- package nameorg.crazyit.app.domain/ /typeAliases /configuration 将该配置文件与MyBatis独立应用的mybatis-config.xml进行对比可以看到该文件主要少了两个元素environments.../和mappers.../—这是由于Spring已为SqlSessionFactory注入了dataSource数据源不再需要配置数据源环境。另外Spring容器接管了Mapper组件的发现、注册也就不需要在mybatis-config.xml文件中配置mappers.../元素了。Spring配置文件中的第三个Bean是Mapper组件DAO组件此处使用MapperFactoryBean来配置Mapper组件—所有的Mapper组件都使用该工厂Bean配置程序获取该Bean时实际返回的只是该工厂Bean的产品。在使用MapperFactoryBean工厂Bean配置Mapper组件时需要通过mapperInterface指定该Mapper组件的接口并通过sqlSessionFactory属性为Mapper组件注入它所依赖的SqlSessionFactory。Spring配置文件中的第四个Bean是Service组件它已经没有任何特别之处了就是简单地配置该Service组件并为它注入所依赖的Mapper组件。接下来主程序即可获取Spring容器中配置的Service组件并调用它的业务方法。上面程序通过Spring容器获取了Service组件并调用了Service组件的方法—Service组件依赖于DAO组件Mapper组件而Mapper组件则由MyBatis实现该程序运行完成后将会看到book_inf表多了一条记录并看到程序显示了id为1的Book实体的title、price这说明Spring与MyBatis整合成功。public class SpringTest { public static void main(String[] args) throws Exception {var ctx new ClassPathXmlApplicationContext(beans.xml);// 获取容器中的Service组件var bookService ctx.getBean(bookService, BookService.class);// 调用Service组件的方法bookService.saveBook(new Book(null, 疯狂Java讲义, 李刚, 109.0));var b bookService.getBook(1);System.out.println(b.getTitle() -- b.getPrice());} }
http://wiki.neutronadmin.com/news/5850/

相关文章:

  • 广东外贸网站建设企业盘锦做网站价格
  • 网站前置审批怎么做手机移动端网站
  • 国外主题网站济南正宗网站建设平台
  • 学做花蛤的网站网站架构基本知识
  • 怎么创建网站详细流程网站开发 改进
  • joomla 企业网站模板河南平台网站建设价位
  • 网站如何做移动网站服务好质量好的网站制作
  • 青岛胶东建设国际机场网站photoshop正版软件多少钱
  • 做网站需要招什么职位东山网站建设
  • 磁力链接 网站怎么做的搜狐视频
  • 网站建设的有什么需求江苏省造价信息工程网
  • 如何建设和优化一个网站步骤中山网站建设开发
  • 湖北建设厅政务网站app免费版下载安装
  • 树莓派做网站什么是网络营销?与电商营销有什么区别?
  • 网站优化细节网站建设项目推文
  • 无锡建设网站的公司简介wordpress 去掉标题
  • php网站模版音乐网站整站程序
  • 网站建设与代运营介绍网站开发 设计文档
  • 沈阳微网站建设网站建设资金的请示
  • 站群系统有哪些做网站 中企动力
  • 网站备案及管理的授权书php网站 上传
  • 关于营销方面的网站北京网站建设公司收购
  • 一起做网店官方网站美丽乡村 村级网站建设
  • 太原网站建设找山西云起时个人网站建设方案模板
  • 可以先做网站后备案么网站开发经营范围
  • 灵犀科技+网站开发佼佼者忻府网站建设排名
  • 江苏省建设类高工申报网站什么是建设企业网站
  • 自己建网站做外贸泉州关键词优化
  • 莱芜网站建设价格网站内容需要备案吗
  • 网站平台都有哪些wordpress主题分享