Mybatis é um projeto de código aberto do Apache. Em 2010, este projeto foi transferido da Apache Software Foundation para o Google Code e foi renomeado Mybatis.
1. A engenharia reversa gera informações básicas
<? xml versão = "1.0" coding = "utf-8"?> <! doctype generatorconfigurationpublic "-// mybatis.org//dtd mybatis generator configuration 1.0 // pt "" http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd "> <generatorconfiguration> <context ID =" Testtables "TargetRuntime =" MyBatis3 "> <CommentGenerator> <!-Remover" value = "true"/> </commentGenerator> <!-Informações de conexão do banco de dados: classe de driver, endereço de conexão, nome de usuário, senha-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" Connectionurl = "jdbc: mysql: // localhost: 3307/mybatis" userId = "root" senha = "jalja"> </jdbcConnection> <!-padrão false, analise os tipos de decimal e numéricos JDBC em número inteiro e, quando true, JDBC decimal e o tipo numérico resolve-se para java.math.bigdecimal-> <navatyperesCompersolver> /> </javatyperesolver> <!-TargetProject: Localização da classe PO gerada-> <JavamodelGenerator TargetPackage = "com.jalja.springmvc_mybatis.model.pojo" TargetProject = "/src"> <! name = "enablesubpackages" value = "false" /> <!-os espaços antes e depois que o valor retornado do banco de dados são limpos-> <propriedade name = "trimStrings" value = "true" /> < /javamodelgenerator> <!-TargetProject: onde o arquivo mapa é gerado TargetPackage = "com.jalja.springmvc_mybatis.mapper" TargetProject = "./ src"> <!-Enablesubpackages: se deve permitir que o esquema seja o sufixo do pacote-> <Nome da propriedade = "EnableBpackages") o pacote-> <propriedade name = "enablesubpackages" value = "false"/> </sqlmapGenerator> <!-TargetPackage: localização da geração de interface do mapeador-> <javaclientGenerator type = "xmlmapper" TargetPackage = "com.jalja.springmv/"mybatis" Enablesubpackages: Se deve permitir que o esquema seja o sufixo do pacote-> <propriedade name = "enablesubpackages" value = "false"/> </javaclientGenerator> <!-Especifique tabelas de banco de dados-> <tablename = "itens"> </tabela <tabela tableName = "Orders"> </tabla> TableName = "Usuário"> </tabela> </context> </generatorconfiguration> public static void main (string [] arhs) lança exceção {list <string> avisos = new ArrayList <tring> (); ConfigurationParser (avisos); configuração config = cp.parseconfiguration (configfile); defaultshellcallback denocros = new defaultShellCallback (substituir); mybatisGenerator mybatisGenerator = new MybatisGener (configblback, warNings); 2. Springmvc e mybatis integram vários arquivos de configuração
1. Estrutura do projeto
2. O código principal de cada arquivo
A.Web.xml
<? xml versão = "1.0" coding = "utf-8"?> <web-app xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema-nstance" xsi: schemalocation = "http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" Version = "3.0"> <lorde-file-list> <lmed-File> index.jsp </limk-File> </lorth-fil-list> <xectemClem-Param> <amam-name> contextConfiglocation </amam-name> <amam-value> ClassPath: spring/ApplicationContext-*. <Ilvier-Class> org.springframework.web.context.contextLoaderListener </lister-class-class> </irvier> <Context-paparam> <amam-name> log4jconfiglocation </param-name> <mame-value> Classpath: log4j.properties </param-value> </value> </válvulas> </param-value> Classpath: Log4j.Properties </Param-Value> </value> </value> <amam-name> log4jrefreshInterval </amam-name> <amam-value> 3000 </amam-value> </context-param> <lister> <lister-class> org.springframework.web.util.log4jconfiglistener </ouvinte-class> </ouvier> <! Código-> <filter> <filter-name> springEncodingFilter </filter-name> <filter-Class> org.springframework.web.filter.characterencodingFilter </filter-class> <iit-param> <amam-name> codificação </param-name <amam-value> utf-8 </ue-ue> </init-param> <iit-param> <amam-name> forcencoding </param-name> <amam-value> true </amam-value> </irit-param> </filter> <trel-mapping> <filter-name> SpringEncodingFilter </filter-name> <url-Pattern>*. DOMPTNG-PTERN> <Veut-name> springmvc </servlet-name> <Servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <init-param> <!-contextConfiglocation carrega o arquivo de configuração do springmvc (adaptador de processador, se não é confundido, se não é confundido, se você é o springmvc de configuração do springmvc (e-in-inger, se não é confundido, se não é confundido, se o que é o springmvc de springmvc de springmert (e-in-inger, se não é confundido, se não. nameservlet.xml (springmvc-servlet.xml)-> <am-name> contextConfigLocation </param-name> <amam-value> ClassPath: spring/springmvc.xml </param-value> </stert-param> <braste-on-startup> 1 </load-startup> </sertlet> </sertlet> </sertlet> </ininterllet> </ininterllet> </ininterllet> </init-start> </sertlet> </sertlet> </erstlet> </init-start> </sertup> </sertlet> </erstlet> <nome da servlet> Springmvc </servlet-name> <!-1, *.do: DispatcherServlet analisa todos os acessos que terminam em *.do2. /: DispatcheserServlet analisa todas as solicitações (incluindo recursos estáticos) Esta configuração pode implementar URL3 de estilo reprontado,/*: Essa configuração será encaminhada para uma página JSP-> <url-Pattern>*. DO </url-Pattern> </servlet> <!-Springmvc Front-End ControlLer Restful <sutern> <Servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <init-param> <amam-name> contextConfigLocation </param-name> <amam-valear> Classpath: spring/ApplicationContext-springmvc.xml </cálculo> </ingread> <inirtpath: Spring/ApportContext-springmvc.xml </váltarue> </ingread> </servlet> <Servlet-mapping> <Verlet-name> springmvc_rest </servlet-name> <url-tattern>/</url-tattern> </servlet-mapping>-> <session-Config> <session-timeout> 30 </stimeout> </session-Config>
b. Config/mybatis/ApplicationContext-Mybatis.xml
<? xml versão = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd Config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtdddtdddtdddtdddtdddtdis.org/dtd/mybatis-3-config.dtdddtdddtdddtddddtdddtddddtdddtds> Configuração): Alguns parâmetros de execução podem ser ajustados quando a execução do MyBatis, como: Ativar cache secundário, ativar o carregamento atrasado típicos (alias do tipo): defina o tipo ParameterType Tipo de parâmetro ResultType no mapper.xml ao retornar um tipo, você precisa especificar o caminho do tipo e não é conveniente para desenvolver. Especificaremos o alias para esses tipos. TypeHandler: em Mybatis, a conversão do tipo JDBC e do tipo Java é concluída através do TypeHandler. O processador fornecido por Mybatis pode atender aos requisitos de desenvolvimento ObjectFactory: Plugins: Ambientes (Objeto de atributo de coleta de ambientes): Ambiente (Sub-atributo do ambiente Objeto): TransactionManager (Gerenciamento de transações): DataSource (Data Source): Aberta (Mapper):-> <!-Gerenciamento de transações e Configuração dos pools-> <! Nome = "LazyLoadingEnabled" value = "true"/> <!-Carregando ativo para carregamento passivo-> <Configuração name = "agressiveLazyLoading" value = "false"/> <!-Ativar Cache de Nível 2-> <Configurar Nome = "Cacheenabled" Value = "True"/> </Settings> <TipeíAias> <! Type = "com.jalja.mybatis.model.user" alias = "user"/>-> <!-Definição de alias de lote mybatis O nome da classe no pacote de varredura automática é o nome da classe (ambas as primeiras letras podem ser usadas para o maiúsculas e a base)-> <Nome do pacote = "com.jalJA.sringmvmvmvmvsvringmvmvmv para o pacote e o pacote" com.jaljA.sringmvmvmvmvmvringmvmvmv para o pacote ". name = "com.jalja.springmvc_mybatis.model.custom"/> <names do pacote = "com.jalja.springmvc_mybatis.model.vo"/> </typeAliases> <! Resource = "com/jalja/spring_mybatis/mapper/userMapper.xml"/>-> <!-Depois de se integrar com a primavera, você pode remover <pacote name = "com.jalja.spring_mybatis.mapper"/> </mappers>-> </figuration>
c. config/spring/ApplicationContext-dao.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: aop = "http://www.springframework.orgog/schema xmlns: cache = "http://www.springframework.org/schema/cache" xmlns: context = "http: //www.sp ringframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc " xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: xsi = "http://www.w3.org/20 01/xmlschema-Instance "xsi: schemalocation =" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/Context http://www.springframework.org/schema/Context/spring-context-3.2.xsd http:/www.springframew.org/3.xsch http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsdhttp://www.springframework.org/schema/cache http://www.springframework/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd"><! name = "Localizações"> <List> <Value> ClassPath: Resources/Config/jdbc.properties </value> </list> </Property> </bean>-> <bean id = "DataSource" Destro-Method = "Close"> <Nome da propriedade = "DriverclassName"> </Value> </jdbc_niver "> name = "url"> <value> $ {jdbc_url} </value> </propriedade> <propriedade name = "nome de usuário"> <valor> $ {jdbc_username} </value> </property> <propriedades name = "senha"> <Value> $ {jdbc de infectword} <//value> </propriedade> </propriedade> </propriedade> </propriedade> </propriedade> <! name = "maxactive"> <Value> 20 </value> </propriedade> <!-Inicialize o tamanho da conexão-> <propriedade name = "Initialsize"> <Value> 1 </value> </propriedade> <!-Obtenha o tempo máximo de espera para conexão-> <! name = "maxidle"> <Value> 20 </value> </propriedade> <!-pool de conexão mínima ociosa-> <names name = "minidle"> <value> 3 </value> </propriedade> <!-Limpar automaticamente a conexão inútil-> <-! name = "RemoveabandOnedTimeout"> <Value> 180 </value> </propriedade> <!-Propriedades de conexão-> <propriedades name = "ConnectionProperties"> <Value> clientEncoding = utf-8 </value> </propriedade> </bean> <!-Perfect Integration of Spring e Mybatis-> <Bean id = "QLEst = SQSLETR = qLeady") ref = "DataSource"/> <propriedade name = "configLocation" value = "classPath: mybatis/ApplicationContext-Mybatis.xml"/> </i bean> <!-mapeador scanner-> <! value = "com.jalja.springmvc_mybatis.mapper"/> <propriedade name = "sqlSessionFactoryBeanName" value = "sqlsessionFactory"/> </i bean> <!-Gerenciamento de transações de transação declarativa usando James (names "<ban> <! REF = "DataSource"> </Property> </ Bean> <!-Configurando a Notificação da Transação-> <TX: Conselhos id = "Txadvice" Transaction-manager = "TransactionManager"> <Tx: Atributes> <Tx: Nome do método "Atualizar*" propagação = ""/"> <T. propagation = "requerir"/> <tx: método name = "get*" propagation = "suporta" leitura somente = "true"/> <tx: método name = "find*" propagation = "suporta" read -ly = "true"/> <tx: atributes> </conselhos> <-!-Configuração da transação-insert e não associados não -> <DaOP: config> <aOP: consultor conselhos-ref = "txadvice" pointcut = "Execution (*com.jalja.springmvc_mybatis.service.impl. D.Config/Spring/ApplicationContext-Service.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: aop = "http://www.springframework.orgog/schema xmlns: cache = "http://www.springframework.org/schema/cache" xmlns: context = "http: //www.sp ringframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc " xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: xsi = "http://www.w3.org/20 01/xmlschema-Instance "xsi: schemalocation =" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/Context http://www.springframework.org/schema/Context/spring-context-3.2.xsd http:/www.springframew.org/3.xsch http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsdhttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd"><bean id = "itens Service"> </i bean> </ Beans>
e, config/spring/springmvc.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: aop = "http://www.springframework.orgog/schema xmlns: cache = "http://www.springframework.org/schema/cache" xmlns: context = "http: //www.sp ringframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc " xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: xsi = "http://www.w3.org/20 01/xmlschema-Instance "xsi: schemalocation =" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd"><!--Annotation Processor Mapper-> <!-mapere org.springframework.web.servlet.mvc.annotation.defaultannotationHandleRMApping springmvc3.1-> <!-mapper org.springframework.web.servlet.mvc.annotation.DeFAnTationLotationMorwork.Web.Servlet.mvc.annotation.DeFAnTationLotationMork org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandleMapping springmvc3.1 depois-> <!-adaptador org.springframework.web.servlet.mvc.annotation.annotationMethhandLerRadApter Antes da springmvlet.mvc.annotation.annotationMethhandLeradApter antes da primavera- org.springframework.web.servlet.mvc.method.annotation.requestMappingHandLeRatapter Após Springmvc3.1-> <!-Configure mapeador e adaptador <bean/> <bean/>-> <!-Ligue o mapper e adapter da anotação. Este método carrega muitos métodos de ligação de parâmetros por padrão, como o analisador de conversão JSON-> <MVC: anotação-driven/> <!-Configure Handler <Bean/>-> <!-ANOTATION CONFIGURAÇÃO <! Configure o analisador de parâmetro personalizado-> <MVC: Anotação de conversão-service = "conversionService"/> <bean id = "conversionService"> <propriedades name = "conversores"> </list> <!-Tipo de data de conversão-> <l-! uploading files --> <bean id="multipartResolver"><!-- File size 5M --><property name="maxUploadSize" value="5242880"/></bean> <!-- Static resource access problem caused by programming using restFul style--><!-- <mvc:resources mapping="/js/**" location="/resources/js/"/> -> <!-Configuração do interceptador Springmvc-> <mvc: interceptores> <mvc: interceptor> <mvc: mapeamento path = "/**"/> <bean/> </mvc: interceptor> </mvc: interceptores> <!-view mapa jsp parsing hstl-> value = "org.springframework.web.servlet.view.jstlview"/> <propriedade name = "prefix" value = "/web-inf/jsp/"/> <names name = "sufix" value = ".
f, config/jdbc.properties
jdbc_driverclassname = com.mysql.jdbc.driverjdbc_url = jdbc: mysql: // localhost: 3306/mybatis? useunicode = true & caracterenCoding = utf-8jdbc_username = rootjdbc_pass/11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
G, config/log4j.properties
#No ambiente de desenvolvimento, o nível de log deve ser definido como depuração, o ambiente de geração deve ser definido como informações ou errorLog4j.rootlogger = Debug, stdoutLog4j.logger.org.apache.ibatis = debugLog4j.appender.stdout = org.apache.log4j.consoleppenderLog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appendsout.stout.stout. %m %n
h, com/jalja/springmvc_mybatis/controller/itemscontroller.java
pacote com.jalja.springmvc_mybatis.controller; importar java.io.file; importar java.util.list; importar java.util.uuid; importar org.springframework.beans.actory.annotation.aUtiled; org.springframework.ui.model; importar org.springframework.web.bind.annotation.pathvariable; importar org.springframework.web.bind.annotation.requestbody; importação org.springframework.web.bind.annotation.requestbody; importação; org.springframework.web.bind.annotation.requestmethod; importar org.springframework.web.bind.annotation.requestparam; importar org.springframework.web.bind.annotation.ResponsoBody; importação.springfringfringfringfringFringFringFringFringFringFringFringFring.web.web.Bind.annotation.Responsoody; com.jalja.springmvc_mybatis.exception.customexception; importar com.jalja.springmvc_mybatis.model.custom.itemscustom; importrice.jalja.springmvc_mybatis.erService.itemService; O SpringMVC fornece muitos conversores de parâmetros*/@controlador@requestmapping ("/itens") // Solicitação estreita Mapeamento de classe pública ItemScontroller {@AUTOWIRED Itens Service Itens Service; @RequestMapping (Value = "/Finditemslist") public string findItemSlist (modelo) Throws Exception {List <scl. itemsList=itemsService.findItemsList(null);System.out.println(itemsList);model.addAttribute("itemsList", itemsList);return "itemsList";}@RequestMapping(value="/editItems", method={RequestMethod.POST,RequestMethod.GET}) //Limit the Http request method//@RequestParam Bind the request Parâmetros com parâmetros formais necessários: especifique que o valor do atributo deve ser passado no DefaultValue: defina o valor padrão public string editItems (modelo Model, @RequestParam (value = "id", requerido = true, defaultValue = "0") itens inteiros) lança a exceção {itemsCustom itemsCustom = itensService.findItemsById (itensId); if (itemsCustom = null) {lança a nova customexception ("Produto não existe");} Model.addattribute ("ItemsCustom", itemScustom); retornar "editiMs";}@requestMapp (valor = "/atualiza); id, itemsCustom itemScustom, MultipartFile Itemspic) lança Exception {String uPLOPLefilename = itemspic.GetoriginalFileName (); // Obtenha o nome do arquivo carregado se (itemspic! newFilename = uuid.randomuuid ()+uPLOPLFILENAME.SUBSTRING (UPLOPLFILENAME.LASTIndexof ("."), UPLOPFILENAMEM.LENGLENHO (); FILEFILE = new File (ImagesPath+NewFilEName); Itemspic.Transfer para (newfile); itemsCustom.Setpic (newFileName);} itensService.UpDateItemsById (ID, ItemScustom); retornar "Redirect: findItemslist.do"; //Redirect}//Use of JSON @ResponseBody: To object to json output @RequestBody: To request parameters to java object @RequestMapping(value="/jsonRequest")public @ResponseBody ItemsCustom jsonRequest(@RequestBody ItemsCustom itemsCustom) throws Exception{return itemsCustom;}//RestFul Style Programação/RestfulRequest/{id}: significa passar o parâmetro nesta posição para o nome especificado por @Pathvariable @RequestMapping (value = "/RestfulRequest/{id}") public @ResponseBody ItemScustom RestfulRequest (@PathVariable ("id) Integer) itemsCustom = itensService.findItemsById (id); retorna o itemsCustom;}}O exposto acima é o código de exemplo mybatis integrado Springmvc introduzido pelo editor. Espero que seja útil para você. Se você quiser saber mais informações, preste atenção ao site wulin.com!