《Java EE框架整合開發(fā)入門到實戰(zhàn)(第2版)》 課件 第14章 MyBatis_第1頁
《Java EE框架整合開發(fā)入門到實戰(zhàn)(第2版)》 課件 第14章 MyBatis_第2頁
《Java EE框架整合開發(fā)入門到實戰(zhàn)(第2版)》 課件 第14章 MyBatis_第3頁
《Java EE框架整合開發(fā)入門到實戰(zhàn)(第2版)》 課件 第14章 MyBatis_第4頁
《Java EE框架整合開發(fā)入門到實戰(zhàn)(第2版)》 課件 第14章 MyBatis_第5頁
已閱讀5頁,還剩151頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第14章MyBatis學(xué)習(xí)目的與要求本章講解MyBatis的環(huán)境構(gòu)建、工作原理、SQL映射文件以及SSM框架的整合開發(fā)。通過本章的學(xué)習(xí),了解MyBatis的工作原理,掌握MyBatis的環(huán)境構(gòu)建以及SSM框架的整合開發(fā),了解MyBatis的核心配置文件的配置信息,掌握MyBatis的SQL映射文件的編寫,熟悉級聯(lián)查詢的MyBatis實現(xiàn),掌握MyBatis的動態(tài)SQL的編寫?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.1MyBatis簡介MyBatis本是apachesoftwarefoundation的一個開源項目iBatis,2010年這個項目由apachesoftwarefoundation遷移到googlecode,并改名為MyBatis。MyBatis是一個基于Java的持久層框架。MyBatis提供的持久層框架包括SQL

Maps和DataAccessObjects(DAO),它消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(PlainOldJavaObjects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.2MyBatis的環(huán)境構(gòu)建如果讀者不使用Maven或Gradle下載MyBatis,可通過網(wǎng)址/mybatis/mybatis-3/releases下載。圖14.1中mybatis-3.5.11.jar是MyBatis的核心包,mybatis-3.5.11.pdf是MyBatis的使用手冊,lib文件夾下的JAR是MyBatis的依賴包。使用MyBatis框架時,需要將它的核心包和依賴包引入到應(yīng)用程序中。如果是Web應(yīng)用,只需將核心包和依賴包復(fù)制到/WEB-INF/lib目錄中即可?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.3MyBatis的工作原理《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社1.讀取MyBatis配置文件mybatis-config.xml。mybatis-config.xml為MyBatis的全局配置文件,配置了MyBatis的運行環(huán)境等信息,如數(shù)據(jù)庫連接信息。2.加載映射文件。映射文件即SQL映射文件,文件中配置了操作數(shù)據(jù)庫的SQL語句,需要在MyBatis配置文件mybatis-config.xml中加載。mybatis-config.xml文件可以加載多個映射文件。3.構(gòu)造會話工廠。通過MyBatis的環(huán)境等配置信息,構(gòu)建會話工廠SqlSessionFactory。4.創(chuàng)建SqlSession對象。由會話工廠創(chuàng)建SqlSession對象,該對象中包含執(zhí)行SQL語句的所有方法。5.MyBatis底層定義了一個Executor接口來操作數(shù)據(jù)庫,它將根據(jù)SqlSession傳遞的參數(shù)動態(tài)地生成需要執(zhí)行的SQL語句,同時負責(zé)查詢緩存的維護。6.在Executor接口的執(zhí)行方法中,有一個MappedStatement類型的參數(shù),該參數(shù)是對映射信息的封裝,用于存儲要映射的SQL語句的id、參數(shù)等信息。7.輸入?yún)?shù)映射。輸入?yún)?shù)類型可以是Map、List等集合類型,也可以是基本數(shù)據(jù)類型和POJO類型。輸入?yún)?shù)映射過程類似于JDBC對preparedStatement對象設(shè)置參數(shù)的過程。8.輸出結(jié)果映射。輸出結(jié)果類型可以是Map、List等集合類型,也可以是基本數(shù)據(jù)類型和POJO類型。輸出結(jié)果映射過程類似于JDBC對結(jié)果集的解析過程。目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.4MyBatis的核心配置<configuration> <properties/><!--屬性--> <settings><!--設(shè)置--> <settingname=""value=""/> </settings> <typeAliases/><!--類型命名(別名)--> <typeHandlers/><!--類型處理器--> <objectFactorytype=""/><!--對象工廠--> <plugins><!--插件--> <plugininterceptor=""></plugin> </plugins> <environmentsdefault=""><!--配置環(huán)境--> <environmentid=""><!--環(huán)境變量--> <transactionManagertype=""/><!--事務(wù)管理器--> <dataSourcetype=""/><!--數(shù)據(jù)源--> </environment> </environments> <databaseIdProvidertype=""/><!--數(shù)據(jù)庫廠商標識--> <mappers><!--映射器,告訴MyBatis到哪里去找映射文件--><mapperresource="com/mybatis/UserMapper.xml"/> </mappers></configuration>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社1.創(chuàng)建Web應(yīng)用并導(dǎo)入相關(guān)JAR包使用Eclipse創(chuàng)建一個名為ch14_1的Web應(yīng)用,并將MyBatis的核心JAR包、MyBatis的依賴JAR包以及MySQL的驅(qū)動連接JAR包復(fù)制到WEB-INF/lib目錄中?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.創(chuàng)建Log4j的日志配置文件MyBatis可使用Log4j輸出日志信息,如果開發(fā)者需要查看控制臺輸出的SQL語句,那么需要在classpath路徑下配置其日志文件。在應(yīng)用ch14_1的src/main/java目錄下創(chuàng)建perties文件。#Globalloggingconfigurationlog4j.rootLogger=ERROR,stdout#MyBatisloggingconfiguration....mybatis.mapper=DEBUG#Consoleoutput...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p[%t]-%m%n《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社3.創(chuàng)建持久化類在應(yīng)用ch14_1的src/main/java目錄下,創(chuàng)建一個名為com.mybatis.po的包,并在該包中創(chuàng)建持久化類MyUser。類中聲明的屬性與數(shù)據(jù)表user的字段一致。@DatapublicclassMyUser{ privateIntegeruid;//主鍵

privateStringuname; privateStringusex; @Override publicStringtoString(){//為了方便查看結(jié)果,重寫了toString方法

return"User[uid="+uid+",uname="+uname+",usex="+usex+"]"; }}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社4.創(chuàng)建MyBatis的核心配置文件在應(yīng)用ch14_1的src/main/java目錄下,創(chuàng)建MyBatis的核心配置文件mybatis-config.xml。在該文件中,配置了數(shù)據(jù)庫環(huán)境和映射文件的位置?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社5.創(chuàng)建SQL映射文件在應(yīng)用ch14_1的src/main/java目錄下,創(chuàng)建一個名為com.mybatis.mapper的包,并在該包中創(chuàng)建SQL映射文件UserMapper.xml。在映射文件中,<mapper>元素是配置文件的根元素,它包含了一個namespace屬性,該屬性值通常設(shè)置為“包名+SQL映射文件名”,指定了唯一的命名空間。子元素<select>、<insert>、<update>以及<delete>中的信息是用于執(zhí)行查詢、添加、修改以及刪除操作的配置。在定義的SQL語句中,“#{}”表示一個占位符,相當于“?”,而“#{uid}”表示該占位符待接收參數(shù)的名稱為uid?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社6.創(chuàng)建測試類在應(yīng)用ch14_1的src/main/java目錄下,創(chuàng)建一個名為com.mybatis.test的包,并在該包中創(chuàng)建MyBatisTest測試類。在測試類中,首先使用輸入流讀取配置文件,然后根據(jù)配置信息構(gòu)建SqlSessionFactory對象。接下來通過SqlSessionFactory對象創(chuàng)建SqlSession對象,并使用SqlSession對象執(zhí)行數(shù)據(jù)庫操作?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.1相關(guān)JAR包實現(xiàn)SSM框架整合開發(fā),需要導(dǎo)入相關(guān)JAR包,包括MyBatis、Spring、Spring

MVC、MySQL連接器、MyBatis與Spring橋接器、Log4j以及DBCP等JAR包。1.MyBatis框架所需的JAR包MyBatis框架所需的JAR包,包括它的核心包和依賴包,詳情見14.2節(jié)。2.Spring框架所需的JAR包Spring框架所需的JAR包,包括它的核心模塊JAR、AOP開發(fā)使用的JAR、JDBC和事務(wù)的JAR包、SpringMVC所需要的JAR包、DispatcherServlet接口所依賴的性能監(jiān)控包以及Java增強庫(lombok)?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.1相關(guān)JAR包3.MyBatis與Spring整合的中間JAR包編寫本書時,該中間JAR包的最新版本為mybatis-spring-3.0.0.jar。此版本可從地址“/artifact/org.mybatis/mybatis-spring”下載。4.數(shù)據(jù)庫驅(qū)動JAR包本書所使用的MySQL數(shù)據(jù)庫驅(qū)動包為mysql-connector-java-8.0.29.jar。5.數(shù)據(jù)源所需的JAR包整合時使用的是DBCP數(shù)據(jù)源,需要準備DBCP和連接池的JAR包。編寫本書時,最新版本的DBCP的JAR包為commons-dbcp2-2.9.0.jar,可從地址“/proper/commons-dbcp/download_dbcp.cgi”下載;最新版本的連接池的JAR包為commons-pool2-2.11.1.jar,可從地址“/proper/commons-pool/download_pool.cgi”下載。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.2MapperScannerConfigurer方式一般情況下,將數(shù)據(jù)源及MyBatis工廠配置在Spring的配置文件中,實現(xiàn)MyBatis與Spring的無縫整合。在Spring的配置文件中,首先,使用BasicDataSource配置數(shù)據(jù)源。其次,使用DataSourceTransactionManager為數(shù)據(jù)源添加事務(wù)管理器。最后,使用SqlSessionFactoryBean配置MyBatis工廠,同時指定數(shù)據(jù)源,并與MyBatis完美整合。使用Spring管理MyBatis的數(shù)據(jù)操作接口的方式有多種。其中,最常用最簡潔的一種是基于MapperScannerConfigurer的整合,實現(xiàn)Mapper代理開發(fā)。MapperScannerConfigurer將包(<propertyname="basePackage"value="xxx"/>)中所有接口自動裝配為MyBatis映射接口Mapper的實現(xiàn)類的實例(映射器),所有映射器都被自動注入SqlSessionFactory實例,同時掃描包中SQL映射文件,MyBatis核心配置文件不再加載SQL映射文件(但要保證接口與SQL映射文件名相同)?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.3整合示例【例14-2】SSM框架整合開發(fā)。1.創(chuàng)建Web應(yīng)用并導(dǎo)入相關(guān)JAR包使用Eclipse創(chuàng)建一個名為ch14_2的Web應(yīng)用,并參考14.6.1節(jié),將相關(guān)JAR包復(fù)制到WEB-INF/lib目錄中。2.創(chuàng)建數(shù)據(jù)庫連接信息屬性文件及Log4j的日志配置文件在應(yīng)用ch14_2的src/main/java目錄下,創(chuàng)建名為config的包,并在該包中創(chuàng)建數(shù)據(jù)庫連接信息屬性文件perties文件。3.創(chuàng)建持久化類在應(yīng)用ch14_2的src/main/java目錄下,創(chuàng)建一個名為com.mybatis.po的包,并在該包中創(chuàng)建持久化類MyUser?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社4.創(chuàng)建SQL映射文件在應(yīng)用ch14_2的src/main/java目錄下,創(chuàng)建一個名為com.mybatis.mapper的包,并在該包中創(chuàng)建SQL映射文件UserMapper.xml?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社5.創(chuàng)建MyBatis的核心配置文件在應(yīng)用ch14_2的config包中,創(chuàng)建MyBatis的核心配置文件mybatis-config.xml。在該文件中,配置實體類別名、日志輸出等。<configuration> <settings>

<settingname="logImpl"value="LOG4J"/> </settings> <typeAliases>

<packagename="com.mybatis.po"/> </typeAliases></configuration>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社6.創(chuàng)建Mapper接口在應(yīng)用ch14_2的com.mybatis.mapper包中,創(chuàng)建接口UserMapper。使用@Repository注解標注該接口是數(shù)據(jù)訪問層。該接口中的方法與SQL映射文件UserMapper.xml的id一致。@RepositorypublicinterfaceUserMapper{ publicMyUserselectUserById(Integerid); publicList<MyUser>selectAllUser(); publicintaddUser(MyUsermyUser); publicintupdateUser(MyUsermyUser); publicintdeleteUser(Integerid);}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社7.創(chuàng)建控制類在應(yīng)用ch14_2的src/main/java目錄下,創(chuàng)建一個名為controller的包,并在該包中創(chuàng)建控制器類TestController。在該控制器類中,調(diào)用Mapper接口中的方法操作數(shù)據(jù)庫?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社8.創(chuàng)建測試頁面在/WEB-INF/目錄下,創(chuàng)建一個名為jsp的文件夾,并在該文件夾中創(chuàng)建test.jsp文件。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社9.創(chuàng)建Web、Spring、SpringMVC的配置文件在應(yīng)用ch14_2的config包中創(chuàng)建Spring配置文件applicationContext.xml和SpringMVC配置文件springmvc.xml,在應(yīng)用ch14_2的/WEB-INF/目錄中創(chuàng)建Web配置文件web.xml。在Spring配置文件applicationContext.xml中,首先,使用<context:property-placeholder/>加載數(shù)據(jù)庫連接信息屬性文件;其次,使用BasicDataSource配置數(shù)據(jù)源,并使用DataSourceTransactionManager為數(shù)據(jù)源添加事務(wù)管理器;再次,使用SqlSessionFactoryBean配置MyBatis工廠,同時指定數(shù)據(jù)源,并與MyBatis完美整合;最后,使用MapperScannerConfigurer實現(xiàn)Mapper代理開發(fā),將basePackage屬性指定包中所有接口自動裝配為MyBatis映射接口Mapper的實現(xiàn)類的實例(映射器),所有映射器都被自動注入SqlSessionFactory實例,同時掃描包中SQL映射文件,MyBatis核心配置文件不再加載SQL映射文件。在SpringMVC配置文件springmvc.xml中,使用<context:component-scan/>掃描控制器包,并使用InternalResourceViewResolver配置視圖解析器。在Web配置文件web.xml中,首先通過<context-param>加載Spring配置文件applicationContext.xml,并通過ContextLoaderListener啟動Spring容器;其次配置SpringMVCDispatcherServlet,并加載Spring

MVC配置文件springmvc.xml。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社10.測試應(yīng)用發(fā)布應(yīng)用ch14_2到Web服務(wù)器Tomcat后,通過地址http://localhost:8080/ch14_2/test測試應(yīng)用?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式類SqlSessionDaoSupport繼承了DaoSupport類,是一個抽象類,是作為DAO的基類使用,需要一個SqlSessionFactory。我們在繼承SqlSessionDaoSupport類的子類中通過調(diào)用SqlSessionDaoSupport類的getSqlSession()方法來獲取這個SqlSessionFactory提供的SqlSessionTemplate對象。而SqlSessionTemplate類實現(xiàn)了SqlSession接口,即可以進行數(shù)據(jù)庫訪問。所以,我們需要Spring框架給SqlSessionDaoSupport類的子類的對象(多個DAO對象)注入一個SqlSessionFactory?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式但自mybatis-spring-1.2.0以來,SqlSessionDaoSupport的setSqlSessionTemplate和setSqlSessionFactory兩個方法上的@Autowired注解被刪除,這就意味著繼承于SqlSessionDaoSupport的DAO類,它們的對象不能被自動注入SqlSessionFactory或SqlSessionTemplate對象。如果在Spring的配置文件中一個一個地配置的話,顯然太麻煩。比較好的解決辦法是在我們的DAO類中覆蓋這兩個方法之一,并加上@Autowired或@Resource注解。那么如果在每個DAO類中都這么做的話,顯然很低效。更合理的做法是,寫一個繼承于SqlSessionDaoSupport的BaseDao,在BaseDao中完成這個工作,然后其它的DAO類再都繼承BaseDao。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式publicclassBaseDaoextendsSqlSessionDaoSupport{ //依賴注入sqlSession工廠

@Resource(name="sqlSessionFactory") publicvoidsetSqlSessionFactory(SqlSessionFactorysqlSessionFactory){ super.setSqlSessionFactory(sqlSessionFactory); }}【例14-3】在14.6.3節(jié)【例14-2】的基礎(chǔ)上,實現(xiàn)繼承SqlSessionDaoSupport類的方式訪問數(shù)據(jù)庫。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式1.創(chuàng)建Web應(yīng)用并導(dǎo)入相關(guān)JAR包使用Eclipse創(chuàng)建一個名為ch14_3的Web應(yīng)用,并參考14.6.1節(jié),將相關(guān)JAR包復(fù)制到WEB-INF/lib目錄中。2.復(fù)制數(shù)據(jù)庫連接信息屬性文件及Log4j的日志配置文件在應(yīng)用ch14_3的src/main/java目錄下,創(chuàng)建名為config的包,將應(yīng)用ch14_2的數(shù)據(jù)庫連接信息屬性文件perties文件復(fù)制到該包中。將應(yīng)用ch14_2的Log4j日志配置文件perties文件,復(fù)制到ch14_3的src/main/java目錄中,并將其中的“.mybatis.mapper=DEBUG”修改為“l(fā)og4j.logger.dao=DEBUG”?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式3.創(chuàng)建持久化類在應(yīng)用ch14_3的src/main/java目錄下,創(chuàng)建一個名為po的包,并在該包中創(chuàng)建持久化類MyUser。4.創(chuàng)建SQL映射文件在應(yīng)用ch14_3的src/main/java目錄下,創(chuàng)建一個名為dao的包,并在該包中創(chuàng)建SQL映射文件UserMapper.xml。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式5.創(chuàng)建MyBatis的核心配置文件在應(yīng)用ch14_3的config包中,創(chuàng)建MyBatis的核心配置文件mybatis-config.xml。在該文件中,配置實體類別名、日志輸出、指定映射文件位置等。<configuration> <settings> <settingname="logImpl"value="LOG4J"/> </settings> <typeAliases> <packagename="po"/> </typeAliases> <!--告訴MyBatis到哪里去找映射文件--> <mappers>

<mapperresource="dao/UserMapper.xml"/> </mappers></configuration>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式6.創(chuàng)建DAO接口和接口實現(xiàn)類在應(yīng)用ch14_3的dao包中,創(chuàng)建SQL映射文件UserMapper.xml對應(yīng)的接口UserMapper。在應(yīng)用ch14_3的dao包中,創(chuàng)建BaseMapper類,在該類中使用@Resource(name="sqlSessionFactory")注解依賴注入sqlSession工廠。在應(yīng)用ch14_3的dao包中,創(chuàng)建接口UserMapper的實現(xiàn)類UserMapperImpl,在該類中使用@Repository注解標注該類的實例是數(shù)據(jù)訪問對象。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式7.創(chuàng)建控制器類在應(yīng)用ch14_3的src/main/java目錄下,創(chuàng)建一個名為controller的包,并在該包中創(chuàng)建控制器類MyController。在該控制器類中,調(diào)用UserMapper接口中的方法操作數(shù)據(jù)庫。8.創(chuàng)建測試頁面在/WEB-INF/目錄下,創(chuàng)建一個名為jsp的文件夾,并在該文件夾中創(chuàng)建test.jsp文件?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.6.4SqlSessionDaoSupport方式9.創(chuàng)建Web、Spring、SpringMVC的配置文件在應(yīng)用ch14_3的config包中創(chuàng)建Spring配置文件applicationContext.xml和SpringMVC配置文件springmvc.xml,在應(yīng)用ch14_3的/WEB-INF/目錄中創(chuàng)建Web配置文件web.xml。在Spring配置文件applicationContext.xml中,首先,使用<context:property-placeholder/>加載數(shù)據(jù)庫連接信息屬性文件;其次,使用BasicDataSource配置數(shù)據(jù)源,并使用DataSourceTransactionManager為數(shù)據(jù)源添加事務(wù)管理器;最后,使用SqlSessionFactoryBean配置MyBatis工廠,同時指定數(shù)據(jù)源,并與MyBatis完美整合。在SpringMVC配置文件springmvc.xml中,使用<context:component-scan/>掃描包,并使用InternalResourceViewResolver配置視圖解析器。在Web配置文件web.xml中,首先通過<context-param>加載Spring配置文件applicationContext.xml,并通過ContextLoaderListener啟動Spring容器;其次配置SpringMVCDispatcherServlet,并加載SpringMVC配置文件springmvc.xml?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.7使用MyBatisGenerator插件自動生成映射文件使用MyBatisGenerator插件自動生成MyBatis的DAO接口、實體模型類、Mapper映射文件,將生成的代碼復(fù)制到項目工程中即可,把更多精力放在業(yè)務(wù)邏輯上。MyBatisGenerator有三種常用方法自動生成代碼:命令行、Eclipse插件和Maven插件。1.準備相關(guān)JAR包需要準備的JAR包:mysql-connector-java-8.0.29.jar和mybatis-generator-core-1.4.1.jar(/artifact/org.mybatis.generator/mybatis-generator-core/1.4.1)。2.創(chuàng)建文件目錄在某磁盤根目錄下新建一個文件目錄。如,C:\generator。并將mysql-connector-java-8.0.29.jar和mybatis-generator-core-1.4.1.jar文件復(fù)制到generator目錄下。另外,在generator目錄下,創(chuàng)建src子目錄存放生成的相關(guān)代碼文件。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.7使用MyBatisGenerator插件自動生成映射文件3.創(chuàng)建配置文件在第二步創(chuàng)建的文件目錄(C:\generator)下創(chuàng)建配置文件generator.xml與src文件夾。4.使用命令生成代碼打開命令提示符,進入C:\generator,輸入命令:java-jarmybatis-generator-core-1.4.1.jar-configfilegenerator.xml–overwrite,如圖14.6所示?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.8映射器概述映射器是MyBatis最復(fù)雜且最重要的組件,由一個接口加一個XML文件(SQL映射文件)組成。MyBatis的映射器也可以使用注解完成,但在實際應(yīng)用中使用不多,原因主要來自這幾個方面:其一,面對復(fù)雜的SQL會顯得無力;其二,注解的可讀性較差;其三,注解丟失了XML上下文相互引用的功能。因此,推薦使用XML文件開發(fā)MySQL的映射器?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.8映射器概述《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社元素名稱描

述備

注select查詢語句,最常用、最復(fù)雜的元素之一可以自定義參數(shù),返回結(jié)果集等insert插入語句執(zhí)行后返回一個整數(shù),代表插入的行數(shù)update更新語句執(zhí)行后返回一個整數(shù),代表更新的行數(shù)delete刪除語句執(zhí)行后返回一個整數(shù),代表刪除的行數(shù)sql定義一部分SQL,在多個位置被引用例如,一張表列名,一次定義,可以在多個SQL語句中使用resultMap用來描述從數(shù)據(jù)庫結(jié)果集中來加載對象,是最復(fù)雜、最強大的元素之一提供映射規(guī)則目錄14.1MyBatis簡介14.2MyBatis的環(huán)境構(gòu)建14.3MyBatis的工作原理14.4MyBatis的核心配置14.5使用Eclipse開發(fā)MyBatis入門程序14.6SSM框架整合開發(fā)14.7使用MyBatisGenerator插件自動生成映射文件14.8映射器概述14.9<select>元素14.10<insert>、<update>、<delete>以及<sql>元素14.11級聯(lián)查詢14.12動態(tài)SQL14.13MyBatis的緩存機制《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9<select>元素在SQL映射文件中,<select>元素用于映射SQL的select語句,其示例代碼如下。<!--根據(jù)uid查詢一個用戶信息--><selectid="selectUserById"parameterType="Integer"resultType="MyUser">

select*fromuserwhereuid=#{uid}</select>上述示例代碼中,id的值是唯一標識符(對應(yīng)Mapper接口的某個方法),它接收一個Integer類型的參數(shù),返回一個MyUser類型的對象,結(jié)果集自動映射到MyUser的屬性。但需要注意的是,MyUser的屬性名稱一定與查詢結(jié)果的列名相同。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9<select>元素《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社屬性名稱描

述id它和Mapper的命名空間組合起來使用(對應(yīng)Mapper接口的某個方法),是唯一標識符,供MyBatis調(diào)用parameterType表示傳入SQL語句的參數(shù)類型的全限定名或別名。是個可選屬性,MyBatis能推斷出具體傳入語句的參數(shù)。resultTypeSQL語句執(zhí)行后返回的類型(全限定名或者別名)。如果是集合類型,返回的是集合元素的類型。返回時可以使用resultType或resultMap之一resultMap它是映射集的引用,與<resultMap>元素一起使用。返回時可以使用resultType或resultMap之一flushCache它的作用是在調(diào)用SQL語句后,是否要求MyBatis清空之前查詢本地緩存和二級緩存。默認值為false。如果設(shè)置為true,則任何時候只要SQL語句被調(diào)用,都將清空本地緩存和二級緩存useCache啟動二級緩存的開關(guān)。默認值為true,表示將查詢結(jié)果存入二級緩存中timeout用于設(shè)置超時參數(shù),單位是秒。超時將拋出異常。fetchSize獲取記錄的總條數(shù)設(shè)定statementType告訴MyBatis使用哪個JDBC的Statement工作,取值為STATEMENT(Statement)、PREPARED(PreparedStatement)、CALLABLE(CallableStatement),默認值為PREPAREDresultSetType這是針對JDBC的ResultSet接口而言,其值可設(shè)置為FORWARD_ONLY(只允許向前訪問)、SCROLL_SENSITIVE(雙向滾動,但不及時更新)、SCROLL_INSENSITIVE(雙向滾動,及時更新)14.9.1使用Map接口傳遞參數(shù)在MyBatis中,允許Map接口通過鍵值對傳遞多個參數(shù)。假設(shè)數(shù)據(jù)操作接口中有個實現(xiàn)查詢陳姓男性用戶信息功能的方法:publicList<MyUser>testMapSelect(Map<String,Object>param);此時,傳遞給MyBatis映射器的是一個Map對象,使用該Map對象在SQL中設(shè)置對應(yīng)的參數(shù),對應(yīng)SQL映射文件代碼如下:<!--查詢陳姓男性用戶信息--><selectid="testMapSelect"resultType="MyUser"parameterType="map">

select*fromuser

whereunamelikeconcat('%',#{u_name},'%')

andusex=#{u_sex}</select>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9.1使用Map接口傳遞參數(shù)【例14-4】在14.6.3節(jié)【例14-2】的基礎(chǔ)上實現(xiàn)Map接口傳遞參數(shù)。為節(jié)省篇幅,相同的實現(xiàn)不再贅述。1.添加接口方法在應(yīng)用ch14_2的com.mybatis.mapper.UserMapper接口中添加接口方法(見上述),實現(xiàn)查詢陳姓男性用戶信息。2.添加SQL映射在應(yīng)用ch14_2的SQL映射文件UserMapper.xml中添加SQL映射(見上述),實現(xiàn)查詢陳姓男性用戶信息?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9.1使用Map接口傳遞參數(shù)3.添加請求處理方法在應(yīng)用ch14_2的TestController控制器類中,添加測試方法testMapSelect。@GetMapping("/testMapSelect")publicStringtestMapSelect(Modelmodel){

//查詢所有陳姓男性用戶

Map<String,Object>map=newHashMap<>();

map.put("u_name","陳");

map.put("u_sex","男");

List<MyUser>unameAndUsexList=userMapper.testMapSelect(map);

model.addAttribute("unameAndUsexList",unameAndUsexList);

return"showUnameAndUsexUser";}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9.1使用Map接口傳遞參數(shù)4.創(chuàng)建查詢結(jié)果顯示頁面在應(yīng)用ch14_2的WEB-INF/jsp目錄下創(chuàng)建查詢結(jié)果顯示頁面showUnameAndUsexUser.jsp。在該頁面中使用JSTL標簽,所以需要將taglibs-standard-impl-1.2.5-migrated-0.0.1.jar和taglibs-standard-spec-1.2.5-migrated-0.0.1.jar復(fù)制到WEB-INF/lib目錄中。另外,在頁面中使用BootStrap美化頁面,所以需要將相關(guān)的css及js復(fù)制到src/main/webapp/static目錄中,同時在應(yīng)用ch14_2的springmvc.xml文件中使用<mvc:resourceslocation="/static/"mapping="/static/**"></mvc:resources>允許src/main/webapp/static目錄下所有靜態(tài)資源可見?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9.1使用Map接口傳遞參數(shù)5.測試應(yīng)用發(fā)布應(yīng)用ch14_2到Web服務(wù)器Tomcat后,通過地址http://localhost:8080/ch14_2/testMapSelect測試應(yīng)用?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9.2使用JavaBean傳遞參數(shù)在MyBatis中,需要將多個參數(shù)傳遞給映射器時,可以將它們封裝在一個JavaBean中?!纠?4-5】在14.6.3節(jié)【例14-2】的基礎(chǔ)上實現(xiàn)JavaBean傳遞參數(shù)?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社1.添加接口方法在應(yīng)用ch14_2的com.mybatis.mapper.UserMapper接口中添加接口方法selectAllUserByJavaBean(),在該方法中使用MyUser類的對象將參數(shù)信息封裝。接口方法selectAllUserByJavaBean()的定義如下。publicList<MyUser>selectAllUserByJavaBean(MyUseruser);《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.添加SQL映射在應(yīng)用ch14_2的SQL映射文件UserMapper.xml中,添加接口方法對應(yīng)的SQL映射,具體代碼如下。<!--通過JavaBean傳遞參數(shù)查詢陳姓男性用戶信息,#{uname}的uname為參數(shù)MyUser的屬性--><selectid="selectAllUserByJavaBean"resultType="MyUser"parameterType="MyUser">

select*fromuser

whereunamelikeconcat('%',#{uname},'%')

andusex=#{usex}</select>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社3.添加請求處理方法在應(yīng)用ch14_2的控制器類TestController中,添加請求處理方法selectAllUserByJavaBean(),具體代碼如下。@GetMapping("/selectAllUserByJavaBean")publicStringselectAllUserByJavaBean(Modelmodel){

//通過MyUser封裝參數(shù),查詢所有陳姓男性用戶。

MyUsermu=newMyUser();

mu.setUname("陳");

mu.setUsex("男");

List<MyUser>unameAndUsexList=userMapper.selectAllUserByJavaBean(mu);

model.addAttribute("unameAndUsexList",unameAndUsexList);

return"showUnameAndUsexUser";}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社4.測試應(yīng)用重啟Web服務(wù)器Tomcat,通過地址http://localhost:8080/ch14_2/selectAllUserByJavaBean測試應(yīng)用?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9.3使用@Param注解傳遞參數(shù)不管是Map傳參,還是JavaBean傳參,它們都是將多個參數(shù)封裝在一個對象中,實際上傳遞的還是一個參數(shù)。而使用@Param注解可以將多個參數(shù)依次傳遞給MyBatis映射器。示例代碼如下。publicList<MyUser>selectByParam(@Param("puname")Stringuname,@Param("pusex")Stringusex);在上述示例代碼中,puname和pusex是傳遞給MyBatis映射器的參數(shù)名。【例14-6】在14.6.3節(jié)【例14-2】的基礎(chǔ)上實現(xiàn)@Param注解傳遞參數(shù)。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社1.添加接口方法在應(yīng)用ch14_2的UserMapper接口中,添加數(shù)據(jù)操作接口方法selectAllUserByParam(),在該方法中使用@Param注解傳遞兩個參數(shù)。接口方法selectAllUserByParam()的定義如下。publicList<MyUser>selectAllUserByParam(@Param("puname")Stringuname,@Param("pusex")Stringusex);《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.添加SQL映射在應(yīng)用ch14_2的SQL映射文件UserMapper.xml中,添加接口方法selectAllUserByParam()對應(yīng)的SQL映射,具體代碼如下。<!--通過@Param注解傳遞參數(shù)查詢陳姓男性用戶信息,這里不需要定義參數(shù)類型--><selectid="selectAllUserByParam"resultType="MyUser">

select*fromuser

whereunamelikeconcat('%',#{puname},'%')

andusex=#{pusex}</select>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社3.添加請求處理方法在應(yīng)用ch14_2的控制器類TestController中,添加請求處理方法selectAllUserByParam(),具體代碼如下。@GetMapping("/selectAllUserByParam")publicStringselectAllUserByParam(Modelmodel){

//通過@Param注解傳遞參數(shù),查詢所有陳姓男性用戶。

List<MyUser>unameAndUsexList=userMapper.selectAllUserByParam("陳","男");

model.addAttribute("unameAndUsexList",unameAndUsexList);

return"showUnameAndUsexUser";}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社4.測試應(yīng)用重啟Web服務(wù)器Tomcat,通過地址http://localhost:8080/ch14_2/selectAllUserByParam測試應(yīng)用?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9.4<resultMap>元素<resultMaptype=""id="">

<constructor><!--類在實例化時,用來注入結(jié)果到構(gòu)造方法-->

<idArg/><!--ID參數(shù),結(jié)果為ID-->

<arg/><!--注入到構(gòu)造方法的一個普通結(jié)果-->

</constructor>

<id/><!--用于表示哪個列是主鍵-->

<result/><!--注入到字段或POJO屬性的普通結(jié)果-->

<associationproperty=""/><!--用于一對一關(guān)聯(lián)-->

<collectionproperty=""/><!--用于一對多、多對多關(guān)聯(lián)-->

<discriminatorjavaType=""><!--使用結(jié)果值來決定使用哪個結(jié)果映射-->

<casevalue=""/> <!--基于某些值的結(jié)果映射-->

</discriminator></resultMap>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社<resultMap>元素的type屬性表示需要的POJO,id屬性是resultMap的唯一標識。子元素<constructor>用于配置構(gòu)造方法(當POJO未定義無參數(shù)的構(gòu)造方法時使用)。子元素<id>用于表示哪個列是主鍵。子元素<result>用于表示POJO和數(shù)據(jù)表普通列的映射關(guān)系。子元素<association>、<collection>和<discriminator>是用在級聯(lián)的情況下。14.9.5使用POJO存儲結(jié)果集如果查詢結(jié)果集的列名與JavaBean的屬性名不同,那么可以結(jié)合<resultMap>元素將JavaBean的屬性與查詢結(jié)果集的列名一一對應(yīng)。【例14-7】在14.6.3節(jié)【例14-2】的基礎(chǔ)上,使用<resultMap>元素將JavaBean的屬性與查詢結(jié)果集的列名一一對應(yīng)?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社1.創(chuàng)建POJO類在應(yīng)用ch14_2的com.mybatis.po包中,創(chuàng)建一個名為MapUser的POJO(PlainOrdinaryJavaObject,普通的Java類)類。@DatapublicclassMapUser{ privateIntegerm_uid; privateStringm_uname; privateStringm_usex; @Override publicStringtoString(){ return"User[uid="+m_uid+",uname="+m_uname+",usex="+m_usex+"]"; }}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.添加接口方法在應(yīng)用ch14_2的UserMapper接口中,添加數(shù)據(jù)操作接口方法selectAllUserPOJO(),該方法的返回值類型是List<MapUser>。接口方法selectAllUserPOJO()的定義如下。publicList<MapUser>selectAllUserPOJO();《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社3.添加SQL映射在應(yīng)用ch14_2的SQL映射文件UserMapper.xml中,首先,使用<resultMap>元素將MapUser類的屬性與查詢結(jié)果列名一一對應(yīng)。然后,添加接口方法selectAllUserPOJO()對應(yīng)的SQL映射。

<!--使用自定義結(jié)果集類型--> <resultMaptype="com.mybatis.po.MapUser"id="myResult"> <!--property是MapUser類中的屬性--> <!--column是查詢結(jié)果的列名,可以來自不同的表--> <idproperty="m_uid"column="uid"/> <resultproperty="m_uname"column="uname"/> <resultproperty="m_usex"column="usex"/> </resultMap>

<!--使用自定義結(jié)果集類型查詢所有用戶--> <selectid="selectAllUserPOJO"resultMap="myResult"> select*fromuser </select>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社4.添加請求處理方法在應(yīng)用ch14_2的控制器類TestController中,添加請求處理方法selectAllUserPOJO(),具體代碼如下。@GetMapping("/selectAllUserPOJO")publicStringselectAllUserPOJO(Modelmodel){

List<MapUser>unameAndUsexList=userMapper.selectAllUserPOJO();

model.addAttribute("unameAndUsexList",unameAndUsexList);

return"showUnameAndUsexUserPOJO";}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社5.創(chuàng)建顯示查詢結(jié)果的頁面在應(yīng)用ch14_2的WEB-INF/jsp目錄下,創(chuàng)建showUnameAndUsexUserPOJO.jsp文件顯示查詢結(jié)果,核心代碼如下。<c:forEachitems="${unameAndUsexList}"var="user"> <tr> <td>${user.m_uid}</td> <td>${user.m_uname}</td> <td>${user.m_usex}</td> </tr></c:forEach>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社14.9.6使用Map存儲結(jié)果集在MyBatis中,任何查詢結(jié)果都可以使用Map存儲?!纠?4-8】在14.6.3節(jié)【例14-2】的基礎(chǔ)上,使用Map存儲查詢結(jié)果。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社1.添加接口方法在應(yīng)用ch14_2的UserMapper接口中,添加數(shù)據(jù)操作接口方法selectAllUserMap(),該方法的返回值類型是List<Map<String,Object>>。接口方法selectAllUserMap()的定義如下。publicList<Map<String,Object>>selectAllUserMap();《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.添加SQL映射在應(yīng)用ch14_2的SQL映射文件UserMapper.xml中,添加接口方法selectAllUserMap()對應(yīng)的SQL映射,具體代碼如下。<!--使用Map存儲查詢結(jié)果,查詢結(jié)果的列名作為Map的key,列值為Map的value--><selectid="selectAllUserMap"resultType="map">

select*fromuser</select>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社3.添加請求處理方法在應(yīng)用ch14_2的控制器類TestController中,添加請求處理方法selectAllUserMap(),具體代碼如下。@GetMapping("/selectAllUserMap")publicStringselectAllUserMap(Modelmodel){

//使用Map存儲查詢結(jié)果

List<Map<String,Object>>unameAndUsexList=userMapper.selectAllUserMap();

model.addAttribute("unameAndUsexList",unameAndUsexList);

//在showUnameAndUsexUser.jsp頁面中遍歷時,屬性名與查詢結(jié)果的列名(Map的key)相同

return"showUnameAndUsexUser";}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒

主編,清華大學(xué)出版社

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論