版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
框架简介MyBatis简介MyBatis环境的搭建与入门程序MyBatis的基础操作MyBatis的工作原理第1章
初识MyBatis2024/1/29本课程目标2学完本门课程后,你能够掌握MyBatis、Spring、SpringMVC三大框架技术搭建SpringMVC+Spring+MyBatis框架,并在此框架上熟练进行项目开发学习方法3方法查看框架官方文档和源码多动手多思考学习目标/Target4了解框架的概念和优点了解MyBatis框架的概念和优点掌握MyBatis环境搭建掌握MyBatis入门程序的编写熟悉MyBatis工作原理章节概述/Summary5
实际开发中,随着业务的发展,软件系统变得越来越复杂,如果所有的软件都从底层功能开始开发,那将是一个漫长而繁琐的过程。此外,团队协作开发时,由于没有统一的调用规范,系统会出现大量的重复功能的代码,给系统的二次开发和维护带来不便。为解决上述问题,框架应运而生。框架实现了很多基础性的功能,开发人员不需要关心底层功能操作,只需要专心地实现所需要的业务逻辑,大大提高了开发人员的工作效率。当前市场上的Java
EE开发主流框架有Spring、SpringMVC和Mybatis等,本章主要对框架的概念以及Mybatis的基础知识进行介绍。目录/CONTENTS框架简介MyBatis的基础操作MyBatis环境的搭建与入门程序MyBatis简介6MyBatis的工作原理14325框架简介01第1章初识MyBatis为什么需要框架技术8如何更快更好完成某主题PPT?使用PPT模板思考使用模板有什么好处呢?不用考虑布局、排版等,提高效率可专心在内容上结构统一,便于阅读新手也可以作出专业的PPT提问问题
“框架(Framework)”一词最早出现在建筑领域,指的是在建造房屋前期构建的建筑骨架。在编程领域,框架就是应用程序的骨架,开发人员可以在这个骨架上加入自己的东西,搭建出符合自己需求的应用系统。什么是框架框架的概念9软件框架
软件框架是一种通用的、可复用的软件环境,它提供特定的功能,促进软件应用、产品和解决方案的开发工作。软件框架会包含支撑程序、编译器、代码、库、工具集以及API,它把所有这些部件汇集在一起,以支持项目或系统的开发。
软件框架可以形象地比喻成我们在盖楼房时,用梁+柱子+承重墙搭建起来的钢筋混凝土结构的建筑框架,它是整个建筑的骨架。而实现的软件功能,也就像在这个建筑框架中所要实现的不同类型、功能的房子,比如健身房、商场、酒店、饭店等。框架的概念10框架的概念11框架技术是一个应用程序的半成品提供可重用的公共结构按一定规则组织的一组组件分析优势不用再考虑公共问题专心在业务实现上结构统一,易于学习、维护新手也可写出好程序
在早期Java
EE应用开发中,企业开发人员是利用JSP+Servlet技术进行软件应用和系统开发的,使用该技术会有以下两个弊端。
(1)软件应用和系统可维护性差
如果全部采用JSP+Servlet技术进行软件的开发,因为分层不够清晰,业务逻辑的实现无法单独分离出来,从而造成系统后期维护困难。
(2)代码重用性低
企业希望以最快的速度,开发出最稳定、最实用的软件。如果系统不使用框架,每次开发系统都需要重新开发,需要投入大量的人力物力,并且重新开发的代码可能具有更多的漏洞,这就增加了系统出错的风险。早起Java
EE开发弊端
框架的优势12
相比于使用JSP+Servlet技术进行软件开发,使用框架有以下优势。
1.提高开发效率:如果采用成熟、稳健的框架,那么一些通用的基础工作,如事务处理、安全性、数据流控制等都可以交给框架处理,程序员只需要集中精力完成系统的业务逻辑设计,降低了开发难度。
2.提高代码规范性和可维护性:当多人协同进行开发时,代码的规范性和可维护性就变得非常重要。成熟的框架都有严格的代码规范,能保证团队整体的开发风格统一。
3.提高软件性能:使用框架进行软件开发,可以减少程序中的冗余代码。例如,使用Spring框架开发时,通过Spring的IOC特性,可以将对象之间的依赖关系交给Spring控制,方便解耦,简化开发;使用MyBatis框架开发时,MyBatis提供了XML标签,支持动态的SQL,开发人员无需在类中编写大量的SQL语句,只需要在配置文件中进行配置即可。框架优势框架的优势13
Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的,其主要优势之一就是分层架构。Spring提供了更完善的开发环境,可以为POJO(PlainOrdinaryJavaObject,普通Java对象)对象提供企业级的服务。Spring框架当前主流框架14
SpringMVC是一个Web开发框架,可以将它理解为Servlet。在MVC模式中,SpringMVC作为控制器(Controller)用于实现模型与视图的数据交互,是结构最清晰的。
SpringMVC框架采用松耦合、可插拔的组件结构,具有高度可配置性,与其他的MVC框架相比,具有更强的扩展性和灵活性。SpringMVC框架当前主流框架15
MyBatis是Apache的一个开源项目iBatis,2010年这个项目由ApacheSoftwareFoundation迁移到了GoogleCode,并且改名为MyBatis,2013年11月MyBatis又被迁移到Github。MyBatis是一个优秀的持久层框架,它可以在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM(Object/RelationMapping,即对象关系映射)实现。MyBatis封装性要低于Hibernate,但它性能优越、简单易学,在互联网应用的开发中被广泛使用。
上述介绍的Struts2、Hibernate、Spring、SpringMVC和MyBatis等都是Java
EE开发中最常见的框架,它们能极大地提高JavaEE应用的开发效率,并能保证应用具有稳定的性能,得到了开发者广泛地支持。MyBatis框架当前主流框架16
Hibernate
是一个优秀的持久层框架,它可以在Java对象与关系型数据库之间建立某种映射,以实现Java对象的直接存取。
使用JDBC连接来读写数据库,过程繁琐。Hibernate框架通过简单配置和编码即可替代JDBC繁琐的程序代码。Hibernate已经成为当前主流的数据库持久层框架,被广泛应用在企业开发中。Hibernate框架
当前主流框架17SpringBoot框架是Pivotal团队基于Spring开发的全新框架,其设计初衷是为了简化Spring的配置,使用户能够构建独立运行的程序,提高开发效率。SpringBoot框架本身并不提供Spring框架的核心特性及扩展功能,它只是用于快速、敏捷地开发新一代基于Spring框架的应用,同时它还集成了大量的第三方类库(如Jackson、JDBC、Redis等),使用户只需少量配置就能完成相应功能。SpringBoot框架
当前主流框架18SpringCloud是一系列框架的有序集合,为开发人员构建微服务架构提供了完整的解决方案,它利用SpringBoot的开发便利性巧妙地简化了分布式系统的开发。例如,配置管理、服务发现、控制总线等操作,都可以使用SpringBoot做到一键启动和部署。可以说,SpringCloud将SpringBoot框架进行了再封装,屏蔽掉了复杂的配置和实现原理,具有简单易懂、易部署和易维护等特点。SpringCloud框架
当前主流框架19MyBatis简介02第1章初识MyBatis数据持久化概念21持久化是程序数据在瞬时状态和持久状态间转换的过程内存姓名:小颖性别:女特长:英语JDBC…Stmt.execute("…")…持久状态JDBC的劣势
JDBC是Java程序实现数据访问的基础,JDBC的劣势主要有以下几个方面。(1)数据库连接创建、释放频繁会造成系统资源浪费,从而影响系统性能。(2)
SQL语句在代码中硬编码,造成代码不易维护。在实际应用的开发中,SQL变化的可能性较大。在传统JDBC编程中,SQL变动需要改变Java代码,违反了开闭原则。(3)用PreparedStatement向占有位符号传参数存在硬编码,因为SQL语句的where条件不一定,可能多也可能少,修改SQL需要修改代码,造成系统不易维护。(4)JDBC对结果集解析存在硬编码(查询列名),SQL变化导致解析代码变化,造成系统不易维护。
传统JDBC的劣势22ORM框架23ORM(ObjectRelationalMapping)编写程序的时候,以面向对象的方式处理数据保存数据的时候,却以关系型数据库的方式存储ORM解决方案包含下面四个部分在持久化对象上执行基本的增、删、改、查操作对持久化对象提供一种查询语言或者API对象关系映射工具提供与事务对象交互、执行检查、延迟加载以及其他优化功能
属性字段nameuser_namesexuser_Sexskilluser_skillUser对象name:小颖sex:女skill:英语、程序设计对象-关系映射什么是MyBatis
MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,使用简单的XML或注解进行配置和原始映射,将接口和Java的POJO映射成数据库中的记录,使得Java开发人员可以使用面向对象的编程思想来操作数据库。MyBatis概述24MyBatis简介25MyBatis前身是iBatis,本是Apache的一个开源的项目官方网站ORM框架实体类和SQL语句之间建立映射关系特点基于SQL语法,简单易学能了解底层封装过程SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度方便程序代码调试什么是MyBatis26MyBatis框架也被称之为ORM(Object/RelationMapping,即对象关系映射)框架。所谓的ORM就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。ORM框架的工作原理解决JDBC编程劣势
针对前面提到的JDBC编程的劣势,MyBatis提供了以下解决方案,具体如下。
问题一:数据库链接创建、释放频繁会造成系统资源浪费,从而影响系统性能。
解决方案:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。
问题二:SQL语句在代码中硬编码,造成代码不易维护。在实际应用的开发中,SQL变化的可能较大。在传统JDBC编程中,SQL变动需要改变Java代码,违反了开闭原则。
解决方案:MyBatis将SQL语句配置在MyBatis的映射文件中,实现了与Java代码的分离。MyBatis概述27解决JDBC编程劣势
问题三:使用preparedStatement向占有位符号传参数存在硬编码,因为SQL语句的where条件不一定,可能多也可能少,修改SQL需要修改代码,造成系统不易维护。
解决方案:MyBatis自动将Java对象映射至SQL语句,通过Statement中的parameterType定义输入参数的类型。
问题四:JDBC对结果集解析存在硬编码(查询列名),SQL变化导致解析代码变化,造成系统不易维护。
解决方案:MyBatis自动将SQL执行结果映射至Java对象,通过Statement中的resultType定义输出结果的类型。MyBatis概述28与Hibernate直观对比29HibernateHibernate是一个全表映射的框架。通常开发者只需定义好持久化对象到数据库表的映射关系,就可以通过Hibernate提供的方法完成持久层操作。开发者并不需要熟练的掌握SQL语句的编写,Hibernate会根据制定的存储逻辑,自动的生成对应的SQL,并调用JDBC接口来执行,所以其开发效率会高于MyBatis。Hibernate也存在一些缺点,例如它在多表关联时,对SQL查询的支持较差;更新数据时,需要发送所有字段;不支持存储过程;不能通过优化SQL来优化性能等。MyBatisMyBatis是一个半自动映射的框架。“半自动”是相对于Hibernate全表映射而言的,MyBatis需要手动匹配提供POJO、SQL和映射关系,而Hibernate只需提供POJO和映射关系即可。与Hibernate相比,虽然使用MyBatis手动编写SQL要比使用Hibernate的工作量大,但MyBatis可以配置动态SQL并优化SQL,可以通过配置决定SQL的映射规则,它还支持存储过程等。对于一些复杂的和需要优化性能的项目来说,显然使用MyBatis更加合适。Hibernate与MyBatis有什么区别?MyBatis环境的搭建
与入门程序03第1章初识MyBatis百货中心供应链管理系统介绍2-131总体功能模块百货中心供应链管理系统用户登录用户登录登录验证用户退出用户管理查询用户搜索条件查询分页査询添加用户修改用户删除用户用户权限管理添加用户权限修改用户权限删除用户权限供应商管理查询供应商搜索条件查询分页査询添加供应商修改供应商删除供应商商品管理查询商品搜索条件查询分页査询添加商品修改商品删除商品商品类别管理查询商品类别添加商品类别删除商品类别采购订单管理查询采购订单搜索条件查询分页査询添加采购订单修改采购订单删除采购订单销售订单管理查询销售订单搜索条件查询分页査询新闻管理查询新闻搜索条件查询分页査询添加新闻修改新闻删除新闻演示:课堂贯穿案例(百货中心供应链管理系统)百货中心供应链管理系统介绍2-232数据库设计表用户表(表名:tb_user)用户权限表(表名:tb_role)供应商表(表名:tb_provider)商品类别表(表名:tb_product_category)商品表(表名:tb_product)采购订单表(表名:tb_bill)销售订单表(表名:tb_order)销售订单关联表(表名:tb_order_detail)新闻表(表名:tb_news)逻辑外键关联演示:数据库表结构MyBatis环境搭建的步骤
使用MyBatis框架进行数据库开发之前,需要先搭建MyBatis环境,MyBatis环境搭建主要有如下基本步骤。(1)创建工程;
(2)引入相关依赖;(3)数据库准备;(4)编写数据库连接信息配置文件;(5)编写核心配置文件和映射文件。MyBatis环境搭建33创建工程:(1)启动IntelliJIDEA开发工具,单击工具栏中的File→new→Project选项,弹出NewProject对话框。MyBatis环境搭建34STEP01创建工程:(2)在NewProject对话框中,单击左侧菜单中的“Maven”选项,然后单击“Next”按钮,进入项目命名对话框。MyBatis环境搭建35STEP01创建工程:(3)在“Name”文本框中对Maven项目命名,在“Location”文本框选择项目存放的路径。单击“ArtifactCoordinates”选项可以填写GroupId、ArtifactId和Version。其中GroupId通常设置为公司倒置的网络域名,如“cn.dsscm”;ArtifactId通常设置为项目名;Version使用IDEA默认版本即可。填写完成之后单击“Finish”按钮完成项目创建。MyBatis环境搭建36STEP01引入相关依赖:由于本项目要连接数据库以及对程序进行测试,所以需要在项目的pom.xml文件中导入MySQL驱动包、Junit测试包、MyBatis的核心包等相关依赖。MyBatis环境搭建37STEP02<dependencies><dependency>
<groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency>……</dependencies><build><resources><resource>
<directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>首次引依赖需要联网IDEA默认集成的Maven,所以在第一次引入依赖时,需要在联网状态下进行,且引入依赖需要较长时间,耐心等待到依赖引入完成即可。
MyBatis环境搭建38创建数据库:在MySQL中导入名称为“dsscm.sql”素材文件,创建一个名称为dsscm的数据库。MyBatis环境搭建39STEP03创建数据库连接信息配置文件:在项目的src/main/resources目录下创建数据库连接的配置文件,这里将其命名为perties,在该文件中配置数据库连接的参数。MyBatis环境搭建40STEP04driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/dsscm?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=falseusername=rootpassword=123456创建日志配置文件:在项目的src/main/resources目录下创建perties文件MyBatis环境搭建41STEP041. log4j.rootLogger=debug,stdout,R2. 3. log4j.appender.stdout=org.apache.log4j.ConsoleAppender4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout5. 6. #Patterntooutputthecaller'sfilenameandlinenumber.7. log4j.appender.stdout.layout.ConversionPattern=%5p[%t](%F:%L)-%m%n8. 9. log4j.appender.R=org.apache.log4j.RollingFileAppender10. log4j.appender.R.File=example.log11. 12. log4j.appender.R.MaxFileSize=100KB13. #Keeponebackupfile14. log4j.appender.R.MaxBackupIndex=515. 16. log4j.appender.R.layout=org.apache.log4j.PatternLayout17. log4j.appender.R.layout.ConversionPattern=%p%t%c-%m%nSTEP05创建MyBatis的核心配置文件:在项目的src/main/resources目录下创建MyBatis的核心配置文件,该文件主要用于项目的环境配置,如数据库连接相关配置等。核心配置文件可以随意命名,但通常将其命名为mybatis-config.xml。<configuration><propertiesresource="perties"/><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED">
<propertyname="driver"value="${mysql.driver}"/><propertyname="url"value="${mysql.url}"/><propertyname="username"value="${mysql.username}"/><propertyname="password"value="${mysql.password}"/></dataSource>
</environment></environments></configuration>MyBatis环境搭建42共性问题集中讲解43常见问题及解决办法代码规范问题调试技巧共性问题集中讲解演示案例44查询用户表记录数
需求说明搭建MyBatis开发环境,实现用户表记录数查询在IDEA中创建工程,导入MyBatis的jar包创建MyBatis配置文件mybatis-config.xml,配置数据库信息编写实体类User.java编写SQL映射文件UserMapper.xml编写测试类UserMapperTest.java,运行输出结果分析实现步骤12345MyBatis的入门程序45创建UserMapper.xml:创建包“cn.dsscm.dao”并在里面配置映射文件,该文件也是一个XML文件,命名为UserMapper.xmlSTEP01<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><mappernamespace="cn.dsscm.dao.UserMapper"> <!--查询用户表记录数--> <selectid="count"resultType="int"> SELECTcount(1) FROMtb_user </select></mapper>MyBatis的入门程序46创建测试类:在src/test/java目录下创建cn.dsscm.test包,在该包下创建UserMapperTest.java进行功能测试。STEP02实现步骤读取全局配置文件:mybatis-config.xml创建SqlSessionFactory对象,此对象可以完成对配置文件的读取创建SqlSession对象,此对象的作用是调用mapper文件进行数据操作关闭SqlSession对象@Testpublicvoidtest1(){ //创建SqlSession对象
SqlSessionsqlSession=null; try{ //获取mybatis-config.xml的输入流
InputStreamis=Resources.getResourceAsStream("mybatis-config.xml"); //创建SqlSessionFactory对象
SqlSessionFactoryfactory=newSqlSessionFactoryBuilder().build(is); intcount=0; //创建sqlSession sqlSession=factory.openSession(); //调用mapper文件来对数据进行操作,必须先把mapper文件引入到mybatis-config.xml中
count=sqlSession.selectOne("cn.dsscm.dao.UserMapper.count"); logger.debug("UserMapperTestcount--->"+count); }catch(IOExceptione){ e.printStackTrace(); }finally{ //关闭SqlSession对象
sqlSession.close(); }}共性问题集中讲解47常见问题及解决办法代码规范问题调试技巧共性问题集中讲解与JDBC直观对比48MyBatis将代码分解包装对数据库的数据源的管理包括事务管理通过配置文件,获取返回结果到Java对象的映射通过配置文件,管理SQL及输入参数的映射MyBatis框架优缺点49优点与JDBC相比,减少了50%以上的代码量最简单的持久化框架,小巧并简单易学SQL代码从程序代码中彻底分离,可重用提供XML标签,支持编写动态SQL提供映射标签,支持对象与数据库的ORM字段映射缺点SQL语句编写工作量大,对开发人员有一定要求数据库移植性差MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,适用于性能要求较高或者需求多变的互联网项目!技能训练50查询供应商表记录数需求说明搭建MyBatis开发环境,实现供应商表记录数查询创建Maven工程,导入MyBatis的jar包创建MyBatis配置文件mybatis-config.xml,配置数据库信息编写实体类Provider.java编写SQL映射文件ProviderMapper.xml编写测试类ProviderMapperTest.java,运行输出结果练习提示完成时间:20分钟共性问题集中讲解51常见问题及解决办法代码规范问题调试技巧共性问题集中讲解MyBatis
的基础操作04第1章初识MyBatis演示案例53查询用户
需求说明搭建MyBatis开发环境,实现用户表记录数查询在IDEA中创建工程,导入MyBatis的jar包创建MyBatis配置文件mybatis-config.xml,配置数据库信息编写实体类User.java编写SQL映射文件UserMapper.xml编写测试类UserMapperTest.java,运行输出结果分析实现步骤12345查询用户
54根据用户编号查询用户信息。1根据用户名模糊查询用户信息。2
在实际开发中,查询操作通常都会涉及到单条数据的精确查询,以及多条数据的模糊查询。1.根据用户编号查询用户信息查询用户
55创建POJO实体:在项目的src/main/java目录下创建cn.dsscm.pojo包,在该包下创建User.java类STEP01importjava.util.Date;publicclassUser{ privateIntegerid;//id privateStringuserCode;//用户编码
privateStringuserName;//用户名称
privateStringuserPassword;//用户密码
privateIntegergender;//性别
privateDatebirthday;//出生日期
privateStringphone;//电话
…….
//省略Getter、Setter和toString方法}1.根据用户编号查询用户信息查询用户
56编辑映射文件UserMapper.xml:在映射文件UserMapper.xml,添加根据用户id查询用户信息列表的配置STEP021. <?xmlversion="1.0"encoding="UTF-8"?>2. <!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN"3. "/dtd/mybatis-3-mapper.dtd">4. 5. <mappernamespace="cn.dsscm.dao.user.UserMapper">6. <!--根据用户id查询用户信息列表--><selectid="getUserListById"parameterType="Integer"resultType="cn.dsscm.pojo.User">8. SELECT*FROMdsscm_user9. WHEREid=#{id}10. </select>11. </mapper>1.根据用户编号查询用户信息查询用户
57编辑测试方法:编辑UserMapperTest.java文件,为其添加根据用户ID查询用户信息的操作的测试方法STEP03@TestpublicvoidfindUserByIdTest(){ Useruser=null; SqlSessionsqlSession=null; try{ //1获取mybatis-config.xml的输入流
InputStreamis=Resources.getResourceAsStream("mybatis-config.xml";); //2创建SqlSessionFactory对象,完成对配置文件的读取
SqlSessionFactoryfactory=newSqlSessionFactoryBuilder().build(is); //3创建sqlSession sqlSession=factory.openSession(); //4调用mapper文件来对数据进行操作,必须先把mapper文件引入到mybatis-config.xml中
user=sqlSession.selectOne("cn.dsscm.dao.user.UserMapper.getUserListById",1); logger.debug("UserTestuser--->"+user); }catch(IOExceptione){ e.printStackTrace(); }finally{ sqlSession.close(); }}2.根据用户名模糊查询用户信息查询用户
58编辑映射文件UserMapper.xml:在映射文件UserMapper.xml中,添加根据用户名模糊查询信息列表的SQL语句STEP011. <!--根据用户名模糊查询用户信息列表-->2. <selectid="getUserListByName"parameterType="String"3. resultType="cn.dsscm.pojo.User">4. SELECT*FROMtb_user5. WHEREuserNameLIKE'%${value}%'6. </select>1. <!--根据用户名模糊查询用户信息列表-->2. <selectid="getUserListByName"parameterType="String"3. resultType="cn.dsscm.pojo.User">4. SELECT*FROMtb_user5. WHEREuserNameLIKEconcat('%',#{value},'%')6. </select>2.根据用户名模糊查询用户信息查询用户
59编辑测试方法:在测试类UserMapperTest.java中,添加一个测试方法findUserByNameTest()STEP02@TestpublicvoidfindUserByIdTest(){ …… //4调用mapper文件来对数据进行操作,必须先把mapper文件引入到mybatis-config.xml中
list=sqlSession.selectList("cn.dsscm.dao.user.UserMapper.getUserListByName","张"); logger.debug("UserTestlist--->"+list); ……}一个项目多个配置文件
如果一个项目有多个映射文件,则mybatis-config.xml核心配置文件中需要在<mappers>元素下配置多个<mapper>元素指定映射文件的路径。MyBatis的基础操作60读取配置文件通过SqlSessionFactory创建SqlSession根据配置文件构建SqlSessionFactory12
3使用SqlSession对象操作数据库4关闭SqlSession5MyBatis的操作步骤案例总结查询用户61技能训练62实现供应商表的查询需求说明分别实现按下列条件查询订单表,查询条件如下:全部供应商。供应商(供应商id)。查询结果列显示:供应商信息。练习完成时间:20分钟共性问题集中讲解63常见问题及解决办法代码规范问题调试技巧共性问题集中讲解添加用户64编辑映射文件UserMapper.xml:添加操作是通过<insert>元素来实现的。例如,向数据库中的dsscm_user表中插入一条数据可以通过如下配置来实现。STEP01<!--增加用户--><insertid="add"parameterType="cn.dsscm.pojo.User"> insertintodsscm_user(userCode,userName,userPassword,gender, birthday,phone,address,userRole,createdBy,creationDate) values(#{userCode},#{userName},#{userPassword},#{gender},#{birthday}, #{phone},#{address},#{userRole},#{createdBy},#{creationDate})</insert>添加用户65编辑测试方法:在测试类MybatisTest中,添加测试方法addUserTest()。STEP02 @Test publicvoidfindUserByIdTest(){ …… //4、SqlSession执行添加操作
//4.1创建User对象,并向对象中添加数据
Useruser=newUser(); user.setUserCode("test001"); user.setUserName("测试用户001"); user.setUserPassword("1234567"); …… //4.2执行SqlSession的插入方法,返回的是SQL语句影响的行数
count=sqlSession.insert("cn.dsscm.dao.user.UserMapper.add",user); //4.3通过返回结果判断插入操作是否执行成功
if(count>0){ System.out.println("您成功插入了"+count+"条数据!"); }else{ System.out.println("执行插入操作失败!!!"); } //4.4提交事务
sqlSmit(); …… }更新用户66编辑映射文件UserMapper.xml:在映射文件UserMapper.xml中,更新操作在映射文件中是通过配置<update>元素来实现的。STEP01<!--修改用户信息--><updateid="modify"parameterType="cn.dsscm.pojo.User"> UPDATEdsscm_user SETuserCode=#{userCode},userName=#{userName}, userPassword=#{userPassword},gender=#{gender},birthday=#{birthday}, phone=#{phone},address=#{address},userRole=#{userRole}, modifyBy=#{modifyBy},modifyDate=#{modifyDate} WHEREid=#{id}</update>更新用户67编辑测试方法:在测试类MybatisTest中,添加测试方法updateUserTest(),将id为21的信息修改。STEP02//4、SqlSession执行添加操作
//4.1创建User对象,并向对象中添加数据
Useruser=newUser(); user.setId(21); user.setUserCode("test002"); ……. //4.2执行SqlSession的更新方法,返回的是SQL语句影响的行数
count=sqlSession.update("cn.dsscm.dao.user.UserMapper.modify",user); //4.3通过返回结果判断插入操作是否执行成功
if(count>0){ System.out.println("您成功修改了"+count+"条数据!"); }else{ System.out.println("执行修改操作失败!!!"); } //4.4提交事务
sqlSmit();…….删除用户68编辑映射文件UserMapper.xml:删除操作在映射文件中是通过配置<delete>元素来实现的。STEP01
<!--根据userId删除用户信息--> <deleteid="deleteUserById"parameterType="Integer"> DELETEfromdsscm_user WHEREid=#{id} </delete>删除用户69编辑测试方法:在测试类MyBatisTest中,添加测试方法deleteUserTest(),该方法用于将id为21的用户信息删除。STEP02 @Test publicvoidfindUserByIdTest(){ …… //4、SqlSession执行添加操作
//4.1执行SqlSession的更新方法,返回的是SQL语句影响的行数
count=sqlSession.delete("cn.dsscm.dao.user.UserMapper.deleteUserById",21); //4.2通过返回结果判断插入操作是否执行成功
if(count>0){ System.out.println("您成功删除了"+count+"条数据!"); }else{ System.out.println("执行删除操作失败!!!"); } //4.3提交事务
sqlSmit(); …… }技能训练70实现供应商表的查询需求说明在上一个练习的基础上,实现供应商表的增加操作。实现根据供应商id修改供应商信息的操作。实现根据供应商id删除供应商信息的操作。增加和修改供应商:使用insert元素和update元素。parameterType:Java实体类Provider。DAO层接口方法的返回类型:int。注意:createBy和creationDate,modifyDate和modifyBy这四个字段应根据方法是增加或者修改,来进行灵活操作。删除供应商:使用delete元素。练习完成时间:20分钟提示共性问题集中讲解71常见问题及解决办法代码规范问题调试技巧共性问题集中讲解MyBatis
的工作原理05第1章初识MyBatisMyBa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度婚礼策划与模特服务合同
- 2024年度旅游服务合同with标的:000人团体旅游服务
- 2024年度橡胶制品买卖合同风险防控
- 2024年度抹灰工程承包合同范本
- 2024年度环保要求合同:柴油排放标准与合规
- 2024年度版权许可合同许可作品与许可范围
- 2024年度瓷砖企业环境保护合同
- 2024年度公寓场地租赁合同
- 2024年度嵌入式厨柜供货及安装服务合同
- 2024年度出版发行合同标的及发行渠道
- 九年级化学上册《选择压轴题》专项测试卷-附带答案
- 教科版四年级上册《制作我们的小乐器》作业设计
- 中小学四年级各种跑教案公开课教案教学设计课件案例测试练习卷题
- 2024年部编版七年级上册语文期末复习专项训练:文言文阅读
- 中学生心理健康培训课件
- 孙中山诞辰纪念日主题班会主题班会
- 泰国课件完整版本
- 中医医疗技术相关性感染预防与控制考核试题及答案
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
- 【中考真题】2024年江西省初中学业水平考试历史真题试卷(含答案)
- 浙江省宁波市镇海区2024届九年级上学期期末质量检测数学试卷(含解析)
评论
0/150
提交评论