




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第九章 Spring
MVC與MyBatis框架集成回顧Spring
3.0擁有自己獨(dú)立的數(shù)據(jù)校驗(yàn)框架,同時(shí)支持JSR303標(biāo)準(zhǔn)的校驗(yàn)框架validation-api是JSR
303官方驅(qū)動(dòng)包hibernate-validator是Hibernate對(duì)JSR
303的封裝包<mvc:annotation-driven/>配置是自動(dòng)注冊(cè)SpringMVC所需的驅(qū)動(dòng),并通過LocalValidatorFactory注入校驗(yàn)框架在控制器中不僅可以使用ModelAndView對(duì)象傳參和跳轉(zhuǎn),還能使用Servlet
API入?yún)⒁晥D層一般使用form標(biāo)簽結(jié)合JSTL標(biāo)簽、EL表達(dá)式一同使用本章內(nèi)容1MyBatis
Generator自動(dòng)工具2Spring
MVC、MyBatis框架整合1使用MyBatis
Generator自動(dòng)生成源代碼2SMM框架整合3Mapper
DAO3完成客戶信息維護(hù)功能1.
使用MG工具包,完成數(shù)據(jù)模型和數(shù)據(jù)庫訪問層代碼生成踐習(xí)實(shí)練Spring
MVC和MyBatis整合框架的特點(diǎn)MyBatis
Generator簡介使用MyBatis
Generator工具自動(dòng)生成源代碼技術(shù)講解講解時(shí)間:
30分鐘實(shí)踐時(shí)間:
30分鐘9.1使用Generator自動(dòng)工具:內(nèi)容預(yù)覽9.1.1整合框架的特點(diǎn)使用SpringMVC和MyBatis框架整合是常用的一種項(xiàng)目架構(gòu)。由于加入了MyBatis框架,而優(yōu)勢更大簡單、靈活、易于擴(kuò)展避免了復(fù)雜的緩存機(jī)制,在程序運(yùn)行效率方面也得到了相應(yīng)的提高。Spring
3.0注解支持,從而提高程序的開發(fā)效率。9.1.2
MyBatis
Generator簡介MyBatis
Generator它是MyBatis官方提供的工具包,類似于之前所學(xué)的
Hibernate,通過數(shù)據(jù)庫中的表生成映射文件,它包括
Entity、DAO類和Mapper
XML配置文件<generatorCon<figpurorapteiortny>name="trimStrings"
value="true"
/><class<P/javhaEMnotrdyelloGceantieorna=to"
r">/><cont<esxqtlMid=ap""GtaerngeertaRtourntaimrgee=t"P"a>ckage=""
targetProject=""><com<mperonptGeretynenraamtoer=>"enableSubPackages"value="true"
/></sqlM<parpoGpenrteyrnaatomr>e="suppressAllComments"
value="true"
/><jamveanCtlGieenntGereantoerr>atortype="XMLMAPPER"<jdbctCarognentPecatcioknagderi=v"e"rtCalragsest=P“r”ocjeocnt=ne""c>tionURL=“”
userId=“”<pparsospwerotrydn=a“”m/>e="enableSubPackages"
value="true"
/></jjaavvaaTCylpieenRtGeseonlevrear>tor><table<ptarobpleeNrtaymnea=m"e"
=d"ofmoracienBOigbDjeecctNimaamlse"=v"a">lu<e/t=a"bfalels>e"
/></con<te/jxatv>aTypeResolver></generato<rjCaovanMfigoudraetlGioenn>erator
targetPackage=""
targetProject=""><property
name="enableSubPackages"
value="true"
/>9.1.2
MyBatis
Generator簡介Generator結(jié)構(gòu)對(duì)關(guān)鍵配置元素和屬性進(jìn)行如下解釋屬性名 說明classPathEntry
連接數(shù)據(jù)庫的驅(qū)動(dòng)包,驅(qū)動(dòng)包通常與配置文件位于同一路徑commentGenerator
指定生成注解的模板,suppressAllComments=true表示去掉自動(dòng)生成的代碼注釋jdbcConnection
指定數(shù)據(jù)庫的連接信息javaTypeResolver
java類型轉(zhuǎn)換器javaModelGenerator
指定數(shù)據(jù)模型(實(shí)體類)的生成信息屬性名說明sqlMapGenerator指定sqlMapper
XML文件的生成路徑j(luò)avaClientGenerator指定DAO類生成的路徑table配置反向生成的表信息(1)tablename屬性:匹配數(shù)據(jù)庫中的表名。(2)domainObjectName屬性:自動(dòng)生成的文件頭名稱,通常該配置的首字母大寫。targetPackage屬性:指定實(shí)體類生成的包,如
com.mstf.smm.entity。targetProject屬性:指定實(shí)體類實(shí)際生成的物理位置,可以配置相對(duì)或絕對(duì)路徑。9.1.2
MyBatis
Generator簡介Generator自動(dòng)生成要使用Java命令執(zhí)行生成,才能得到Entity、DAO類和MapperXML配置文件java-jar
mybatis-generator-core.jar-configfile
Generator配置文件-overwrite9.1.3使用Generator工具自動(dòng)生成源代碼使用MyBatis
Generator工具自動(dòng)生成源代碼本案例使用MyBatis提供的Generator工具包反向生成代碼。導(dǎo)入所需要的Jar包文件;編寫Generator配置文件屬性最后,使用Java命令執(zhí)行生成1.在src目錄中,創(chuàng)建名為“aotu”的包。導(dǎo)入(復(fù)制)所需要的jar包文件包名說明mybatis-3.1.1.jar所需的驅(qū)動(dòng)mybatis-generator-core-1.3.2.jarGenerator工具包的驅(qū)動(dòng)mysql-connector-java-5.1-bin.jarMySql數(shù)據(jù)庫連接驅(qū)動(dòng)為了降低程序的復(fù)雜性,我們將生成時(shí)所需的文件統(tǒng)一存放于auto包內(nèi)。使用Java命令時(shí),文件直接生成到src中。9.1.3使用Generator工具自動(dòng)生成源代碼<property
name="suppressAllComments"
value="true"
/><mentGenerator><jdbcConnection
driverClass=“com.mysql.jdbc.Driver”connectionURL=“jdbc:mysql://localhost:3306/mstf”
userId=“root”password=“”/><javaTypeResolver><property
name="forceBigDecimals"
value="false"/></javaTypeResolver><javaModelGeneratortargetPackage=“com.mstf.smm.entity”targetProject=“../">2.在aotu包中,創(chuàng)建config.xml文件,編寫Generator配置文件屬性MySql驅(qū)動(dòng)<generatorConfiguration><classPathEntry
location="mysql-connector-java-5.1.13-bin.jar"
/><contextid="MySqlTables"targetRuntime="MyBatis3"><commentGenerator>連接信息數(shù)據(jù)模型類,生成位置(包)相對(duì)路徑的上一層目錄9.1.3使用Generator工具自動(dòng)生成源代碼2.在aotu包中,創(chuàng)建config.xml文件,編寫Generator配置文件屬性<property
name="trimStrings"
value="true"/></javaModelGenerator><sqlMapGeneratortargetPackage="com.mstf.smm.dao"targetProject=“../"><javaClientGenerator
type="XMLMAPPER"targetPackage="com.mstf.smm.dao"targetProject=“../"><property
name="enableSubPackages"
value="true"
/></javaClientGenerator><table
tableName="customer"
domainObjectName="Customer"></table></context></generatorConfiguration><property
name="enableSubPackages"value="falseD"A/>O類生產(chǎn)的路徑和包MapperXML類生產(chǎn)<property
name="enableSubPackages"value="true"/>
的路徑和包</sqlMapGenerator>要生產(chǎn)的表名要生產(chǎn)的類名9.1.3使用Generator工具自動(dòng)生成源代碼3.完成后,查看工程的結(jié)構(gòu)9.1.3使用Generator工具自動(dòng)生成源代碼4.
使用java命令,執(zhí)行配置腳本。打開MS-DOS窗口,將當(dāng)前路徑指向到auto目錄下,執(zhí)行java命令。當(dāng)最后控制臺(tái)輸出“MyBatis
Generator
finished
successfully.”時(shí),表示正確生成配置9.1.3使用Generator工具自動(dòng)生成源代碼5.在工程名上,單擊“右鍵”選擇“refrash”刷新工程。此時(shí),工程中會(huì)出現(xiàn)兩個(gè)包,此即為使用Generator工具包生成的結(jié)果9.1.3使用Generator工具自動(dòng)生成源代碼5.生成的文件清單如下:包名說明Customer數(shù)據(jù)模型(實(shí)體)類CustomerExample針對(duì)DML語句中where子句的輔助類,非常實(shí)用CustomerMapper數(shù)據(jù)庫訪問層,它封裝了單表的DML操作CustomerMapper.xmlSQL語句的映射文件當(dāng)我們?cè)贛S-DOS窗口重復(fù)執(zhí)行命令時(shí),所有自動(dòng)生成的java文件都是重新生成、且覆蓋以前的文件。但是,Mapper.xml文件不會(huì)重新生成,而是將文檔內(nèi)容追加,產(chǎn)生重復(fù)的配置代碼。此時(shí),再次啟動(dòng)服務(wù)器時(shí),控制臺(tái)會(huì)報(bào)錯(cuò)。所以,建議同學(xué)們重新執(zhí)行Java命令前,首先要?jiǎng)h除現(xiàn)有的Mapper.xml文件。9.1.3使用Generator工具自動(dòng)生成源代碼9.1.4學(xué)生實(shí)踐練習(xí)實(shí)踐時(shí)間:
30分鐘使用MyBatisGenerator工具包,完成數(shù)據(jù)模型和數(shù)據(jù)庫訪問層代碼生成。對(duì)數(shù)據(jù)庫中,goods表的反向生成9.1.4學(xué)生實(shí)踐練習(xí)在mysql數(shù)據(jù)庫中,創(chuàng)建名為“goods”的商品表。創(chuàng)建Web工程,命名為“goodsProject”。在src目錄中,創(chuàng)建auto包。在auto包中,導(dǎo)入(復(fù)制)所需要的jar包文件。在aotu包中,創(chuàng)建config.xml文件,編寫Generator配置文件屬性。在MS-DOS中,執(zhí)行Java命令完成反向生成。1.
搭建SMM框架,完成商品信息查詢功能踐習(xí)實(shí)練Spring
3.0在各層中使用的注解SMM架構(gòu)整合搭建和使用技術(shù)講解講解時(shí)間:
45分鐘實(shí)踐時(shí)間:
30分鐘9.2
SMM框架整合:內(nèi)容預(yù)覽9.2.1
Spring
3.0在各層中使用的注解Spring3.0采用全注解的方式開發(fā),被注解后,不需要使用<bean>進(jìn)行注入,如此減少了配置環(huán)節(jié),提高了開發(fā)效率。使用步驟如下:在spring配置文件中,使用<ponent-scan>自動(dòng)掃描注解,如@Repository、@Autowired等。依次在各層中,使用@Repository、@Service和@Controller注解。在依賴類中,使用@Autowired對(duì)接口聲明@Autowired@Autowired注解用于自動(dòng)裝配對(duì)象,類似于在
applicationContext.xml文件中注入對(duì)象@Autowiredprivate
Objectobj;9.2.1
Spring
3.0在各層中使用的注解SMM架構(gòu)整合搭建和使用1.
在web工程中,添加Spring支持,選擇Core
Libraries、AOP
Libraries、Persistence
Core和Web
Libraries支持。其中,Persistence
Core代表對(duì)持久化框架的支持,并非特指Hibernate框架,所以需要添加Persistence
Core。9.2.2
SMM架構(gòu)整合搭建和使用2.在lib文件夾下,導(dǎo)入(復(fù)制)所需要的jar包文件。其中,mybatis-spring-1.1.1.jar用于整合所需要的關(guān)鍵包9.2.2
SMM架構(gòu)整合搭建和使用包名說明commons-dbcp.jarApache提供的DBCP數(shù)據(jù)源commons-pool-1.5.4.jarDBCP數(shù)據(jù)源中連接池的實(shí)現(xiàn)mybatis-3.1.1.jarMyBatis
3.1驅(qū)動(dòng)mybatis-spring-1.1.1.jar由MyBatis提供的Spring被整合包mysql-connector-java-5.1-bin.jarMySql數(shù)據(jù)庫連接驅(qū)動(dòng)jstl.jarJSTL支持standard.jarJSTL支持3.在src目錄中,創(chuàng)建MyBatis配置文件。因?yàn)榧軜?gòu)整合的原因,我們只需要配置Mappers映射即可9.2.2
SMM架構(gòu)整合搭建和使用sqlMapConfig.xml文件<configuration><mappers><mapper
resource="com/mstf/smm/dao/CustomerMapper.xml"
/></mappers></configuration>每個(gè)mapper配置一個(gè)映射文件路徑4.在viewSpace-servlet.xml文件中,添加Spring配置信息9.2.2
SMM架構(gòu)整合搭建和使用<beans
xmlns=""xmlns:xsi="
"xmlns:mvc="
"xmlns:p="
"xmlns:context="
"xmlns:tx="
" xmlns:aop="
"xsi:schemaLocation="">添加Spring對(duì)mvc、context、tx和aop的支持4.
在viewSpace-servlet.xml文件中,添加Spring配置信息9.2.2
SMM架構(gòu)整合搭建和使用<mvc:annotation-driven
/><ponent-scan
base-package="com.mstf.smm"
/><bean
id="dataSource"
class="
mons.dbcp.BasicDataSource"><property
name="driverClassName"
value="com.mysql.jdbc.Driver“/><property
name="url"value="jdbc:mysql://localhost:3306/mstf?useUnicode=true&characterEncoding=utf-8“/><property
name="username"
value="root"></property><property
name="password"value=""></property></bean><bean
id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><property
name="configLocation"
value="classpath:sqlMapConfig.xml"
/><property
name="dataSource"
ref="dataSource"></property></bean>自動(dòng)注冊(cè)SpringMVC所需的所有驅(qū)動(dòng)配置dbcp數(shù)據(jù)源,通過數(shù)據(jù)源管理數(shù)據(jù)庫連接管理MyBatis
Session工廠以上四個(gè)步驟,可以使用Spring對(duì)SpringMVC和MyBatis框架整合過程全部完成。9.2.2
SMM架構(gòu)整合搭建和使用9.2.2
SMM架構(gòu)整合搭建和使用實(shí)現(xiàn)員工信息添加功能本案例實(shí)現(xiàn)對(duì)員工信息添加操作,具體步驟如下:在CustomerMapper接口中,添加@Repository注解在viewSpace-servlet.xml文件中,添加對(duì)CustomerMapper的配置信息在service包中,創(chuàng)建CustomerService業(yè)務(wù)處理類。添加@service注解,并通過@Autowired實(shí)現(xiàn)對(duì)數(shù)據(jù)庫訪問層的調(diào)用在action包中,創(chuàng)建CustomerController控制器類。處理頁面添加請(qǐng)求在WebRoot目錄中,創(chuàng)建index.jsp頁面,編寫注冊(cè)表單9.2.2
SMM架構(gòu)整合搭建和使用1.在CustomerMapper接口中,添加@Repository注解CustomerMapper.java@Repositorypublic
interface
CustomerMapper
{int
countByExample(CustomerExample
example);//省略……}9.2.2
SMM架構(gòu)整合搭建和使用<bean
id="customerMapper“class="org.mybatis.spring.mapper.MapperFactoryBean"><property
name="mapperInterface"value="com.mstf.smm.dao.CustomerMapper"
/><property
name="sqlSessionFactory"
ref="sqlSessionFactory"
/></bean>2.在viewSpace-servlet.xml文件中,添加對(duì)
CustomerMapper的配置信息引入DAO接口,產(chǎn)生DAO實(shí)現(xiàn)類,并動(dòng)態(tài)獲得sqlSessionFactory對(duì)象viewSpace-servlet.xml在注入中,對(duì)Mapper(DAO)實(shí)施注入,并引用sqlSessionFactoryBean。在項(xiàng)目中,要對(duì)每一個(gè)Mapper接口分別配置。它們的注入順序是:
dataSource→sqlSessionFactory→xxMapper。3.在service包中,創(chuàng)建CustomerService業(yè)務(wù)處理類。添加@service注解,并通過@Autowired實(shí)現(xiàn)對(duì)數(shù)據(jù)庫訪問層的調(diào)用9.2.2
SMM架構(gòu)整合搭建和使用CustomerService.java@Servicepublic
class
CustomerService
{@Autowiredprivate
CustomerMapper
customerMapper;public
int
addCustomers(Customer
cus)
{return
customerMapper.insert(cus);}}使用@Autowired自動(dòng)注解4.在action包中,創(chuàng)建CustomerController控制器類。處理頁面的添加請(qǐng)求9.2.2
SMM架構(gòu)整合搭建和使用CustomerController.java@Controller@RequestMapping(value="/")public
class
CustomerColltroller
{@Autowiredprivate
CustomerService
customerService;@RequestMapping(value="/reg")public
String
reg(@ModelAttribute("customer")
Customer
cus){customerService.addCustomers(cus);return"/index.jsp";}}使用@Autowired自動(dòng)注解9.2.2
SMM架構(gòu)整合搭建和使用5.
在WebRoot目錄中,創(chuàng)建index.jsp頁面,編寫注冊(cè)表單index.jsp<form
action="reg.form"method="post"><table><tr><td>姓名:</td><td><input
name="cusName"
type="text"
/></td></tr>……<tr><td
colspan="2"
align="center"><input
type="submit"
value="添加客戶"/></td></tr></table></form>6.
在瀏覽器地址欄中,輸入地址。填寫注冊(cè)表單7.
打開mysql客戶端工具,客戶信息已經(jīng)添加到customer表9.2.2
SMM架構(gòu)整合搭建和使用CustomerMapper只是一個(gè)接口,而我們要在Service類中對(duì)其進(jìn)行實(shí)例化調(diào)用,那么MyBatis是如何做到的呢?在Spring配置中,使用MapperFactoryBean對(duì)象創(chuàng)建動(dòng)態(tài)代理類實(shí)現(xiàn)CustomerMapper接口,并注入到程序中9.2.2
SMM架構(gòu)整合搭建和使用9.2.3學(xué)生實(shí)踐練習(xí)實(shí)踐時(shí)間:
30分鐘搭建SMM框架,完成商品信息查詢功能。當(dāng)用戶輸入商品ID時(shí),在新頁面顯示查詢商品的信息9.2.3學(xué)生實(shí)踐練習(xí)參考本教材第8章的8.2小節(jié),完成SMM項(xiàng)目架構(gòu)搭建。在GoodsMapper接口中,添加@Repository注解。在viewSpace-servlet.xml文件中,添加對(duì)CustomerMapper的配置信息在service包中,創(chuàng)建GoodsService業(yè)務(wù)處理類。添加@service注解,通過@Autowired實(shí)現(xiàn)對(duì)下層的訪問。在action包中,創(chuàng)建GoodsController控制器類。處理頁面的查詢請(qǐng)求在WebRoot目錄中,創(chuàng)建index.jsp頁面。填寫商品ID在WebRoot目錄中,創(chuàng)建details.jsp頁面,編寫簡單表單,注冊(cè)客戶信息在瀏覽器地址欄中,輸入地址,查看運(yùn)行結(jié)果。1.
改進(jìn)“商品信息管理”案例,完成商品表信息修改功能踐習(xí)實(shí)練Mapper
DAO方法詳解完成客戶信息列表完成客戶信息組合查詢技術(shù)講解講解時(shí)間:
20分鐘實(shí)踐時(shí)間:
25分鐘9.3
Mapper
DAO:內(nèi)容預(yù)覽9.3.1
Mapper
DAO方法詳解Mapper
DAO方法使用Generator自動(dòng)工具生成時(shí),系統(tǒng)產(chǎn)生了一個(gè)Mapper類,它封裝了DML的常用方法。方法名說明countByExample通過任意查詢條件,返回表中的數(shù)據(jù)行數(shù)deleteByExample通過任意條件刪除表數(shù)據(jù),返回受影響的行數(shù)deleteByPrimaryKey通過主鍵刪除表數(shù)據(jù),返回受影響的行數(shù)insert全字段添加數(shù)據(jù),返回受影響的行數(shù)insertSelective任意字段添加數(shù)據(jù),返回受影響的行數(shù)selectByExample通過任意條件查詢數(shù)據(jù),返回List結(jié)果集selectByPrimaryKey通過主鍵查詢數(shù)據(jù),返回實(shí)體對(duì)象updateByExampleSelective通過任意條件更新表數(shù)據(jù),返回受影響的行數(shù)updateByExample更新全字段的數(shù)據(jù),返回受影響的行數(shù)updateByPrimaryKeySelective通過主鍵更新表任意字段數(shù)據(jù),返回受影響的行數(shù)updateByPrimaryKey通過主鍵更新表全字段數(shù)據(jù),返回受影響的行數(shù)9.3.1
Mapper
DAO方法詳解Example參數(shù)在方法中使用了大量的Example作為參數(shù),該如何使用?通過cus_name字段查詢結(jié)果集MyBatis代碼CustomerExample
example=new
CustomerExample();example.createCriteria().andCusNameEqualTo("穆勒");List<Customer>list=customerMapper.selectByExample(example);SQL語句輸出select
cus_id,
cus_name,
cus_birthday,
cus_grade
from
customerWHERE
(
cus_name
=
?
)9.3.1
Mapper
DAO方法詳解通過cus_name字段模糊匹配,更新cus_grade,返回結(jié)果集MyBatis代碼Customer
customer
=
new
Customer();customer.setCusGrade("NONE");CustomerExample
example=new
CustomerExample();example.createCriteria().andCusNameLike("穆%");int
count
=
customerMapper.updateByExampleSelective(customer,example);SQL語句輸出update
customer
SETcus_grade
=
?
WHERE
(
cus_name
like
?
)9.3.1
Mapper
DAO方法詳解通過cus_name和cus_grade字段查詢,并通過cus_id倒序結(jié)果集MyBatis代碼CustomerExample
example
=
new
CustomerExample();example.createCriteria().andCusNameEqualTo("jack");example.or(example.createCriteria().andCusGradeEqualTo("VIP"));example.setOrderByClause("cus_id
desc");List<Customer>
list
=
customerMapper.selectByExample(example);SQL語句輸出select
cus_id,
cus_name,
cus_birthday,
cus_grade
from
customerWHERE
(
cus_name
=
?
)
or(
cus_grade
=
?
)
order
by
cus_id
desc9.3.2完成客戶信息列表顯示客戶信息列表功能本案例要求實(shí)現(xiàn)客戶信息列表功能。開啟Spring
MVC框架對(duì)JSTL標(biāo)簽庫的支持;依次編寫數(shù)據(jù)庫訪問層、業(yè)務(wù)邏輯層和控制層的代碼;最后,在頁面中使用JSTL,結(jié)合EL表達(dá)式渲染9.3.2完成客戶信息列表1.在viewSpace-servlet.xml文件中,添加視圖層對(duì)JSTL標(biāo)簽庫的支持viewSpace-servlet.xml<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property
name="viewClass"value="org.springframework.web.servlet.view.JstlView"></property></bean>9.3.2完成客戶信息列表2.
在CustomerService類中,編寫獲取用戶列表的方法3.
在CustomerController類中,編寫控制器方法,通過request保存輸出結(jié)果集4.在index.jsp頁面中,添加跳轉(zhuǎn)鏈接,請(qǐng)求控制器中的all()方法CustomerSCeornvtircoell.exrm.jal
vap@uRbleicqLuiesst<tMCaupsptoinmge(vr>alfuined=C"/uasll"to)
mers()
{CpubsltiocmSetrriEnxgaamll(pHlettpeSxaemrvpleletR=eqnueewsCt
ruesqtuoemset)rE{
xample();returnrecquusetosmt.seertMAattpripbeurt.es(e"lceucstBLiysEt"x,
acmusptloem(eexraSmerpvleic)e;
.findCustomers());return
"display.jsp";}}index.jsp<a
href="all.form">查看客戶信息列表</a>9.3.2完成客戶信息列表5.在WebRoot目錄中,創(chuàng)建display.jsp文件,接收并渲染結(jié)果集display.jsp<%@
taglib
uri="
"
prefix="c"
%><%@
taglib
uri="
"
prefix="fmt"
%>……<table
border="1"
width="500"
align="center">……<c:forEach
var="cus"
items="${cusList}"
varStatus="vs"><tr><td>${vs.count}</td><td>${cus.cusName}</td><td><fmt:formatDate
value="${cus.cusBirthday}"pattern="yyyy年MM月dd日"/></td><td>${cus.cusGrade}</td></tr></c:forEach></table>日期類型格式化9.3.3完成客戶信息組合查詢實(shí)現(xiàn)客戶信息組合查詢功能本案例在客戶列表基礎(chǔ)上,增加信息的組合查詢功能。對(duì)“用戶名”和“客戶級(jí)別”字段進(jìn)行組合查詢,如果直接點(diǎn)擊“查找”按鈕,則查詢出所有客戶信息;當(dāng)輸入一個(gè)條件時(shí),則按單條件查詢?nèi)绻斎雰蓚€(gè)條件,將使用AND多條件查詢9.3.3完成客戶信息組合查詢public
List<Customer>
findByProperty(Customercus){CustomerExample
example
=
new
CustomerExample();Criteria
c=
example.createCriteria();if(!"請(qǐng)選擇".equals(cus.getCusGrade())) //
等級(jí)條件匹配c.andCusGradeEqualTo(cus.getCusGrade()); //
and條件拼接if(!"".equals(cus.getCusName())) //
姓名條件模糊匹配c.andCusNameLike("%"
+
cus.getCusName()
+
"%");return
customerMapper.selectByExample(example);}1.在CustomerService類中,編寫findByProperty方法,接收查詢參數(shù),返回查詢列表客戶信息條件查詢CustomerService.java9.3.3完成客戶信息組合查詢2.在CustomerController類中,編寫search方法,接收查詢參數(shù),返回查詢結(jié)果集CustomerController.java@RequestMapping(value="/search")public
String
search(@ModelAttribute("customer")
Customer
cus,HttpServletRequest
request)
{request.setAttribute("cusList",
customerService.findByProperty(cus));return
"display.jsp";}將查詢結(jié)果保存到request對(duì)象中9.3.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年捐款協(xié)議模板
- 二年級(jí)上冊(cè)數(shù)學(xué)教案-除法的初步認(rèn)識(shí)(2)-西師大版
- 三年級(jí)上冊(cè)數(shù)學(xué)教學(xué)設(shè)計(jì)-5.1什么是周長 北師大版
- 六年級(jí)下冊(cè)數(shù)學(xué)教案-第一單元第3課時(shí) 問題解決(1) 西師大版
- 2025年購房合同模板文件
- 借住合同(2025年版)
- 學(xué)習(xí)2025年雷鋒精神六十二周年主題活動(dòng)實(shí)施方案 (3份)-98
- 2025年學(xué)習(xí)雷鋒精神六十二周年主題活動(dòng)方案
- 《線段、射線和直線》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)冀教版
- 《小小設(shè)計(jì)師》(教學(xué)設(shè)計(jì))-2023-2024學(xué)年二年級(jí)下冊(cè)數(shù)學(xué)人教版
- 人教版八年級(jí)美術(shù)下冊(cè)全冊(cè)課件匯總
- 質(zhì)量管理-AQL抽樣基礎(chǔ)知識(shí)培訓(xùn)課件
- 藥事管理與法規(guī)考試題庫及答案(可下載)
- 2023年煙臺(tái)南山學(xué)院單招綜合素質(zhì)考試筆試題庫及答案解析
- 基于Matlab的并行計(jì)算課件
- 2021年熔化焊與熱切割基礎(chǔ)知識(shí)課件
- 瀝青試驗(yàn)講解精品課件
- 秒的認(rèn)識(shí) 完整版PPT
- 創(chuàng)新藥產(chǎn)業(yè)鏈研究培訓(xùn)框架
- 燃?xì)鈽I(yè)務(wù)代辦授權(quán)書模板
- 《中國人閱讀書目(三)——中國初中生基礎(chǔ)閱讀書目-導(dǎo)賞手冊(cè)》新書簡介2014.8.14 (1)
評(píng)論
0/150
提交評(píng)論