Este artigo apresenta principalmente a integração de MAVEN, MYBATIS e Spring MVC (imagens e textos) da construção da estrutura Java. É compartilhado com você. Os detalhes são os seguintes:
SSM (Spring+Springmvc+Mybatis), atualmente uma solução de arquitetura em nível corporativo relativamente mainstream. O modelo padrão de design MVC divide todo o sistema em quatro camadas: camada de exibição, camada do controlador, camada de serviço e camada DAO. O SpringMVC é usado para ser responsável pelo encaminhamento de solicitação e gerenciamento de visualização, o Spring implementa o gerenciamento de objetos de negócios e o MyBatis é usado como mecanismo de persistência do objeto de dados.
Detalhes do quadro
A Spring é uma estrutura leve de desenvolvimento Java criada para resolver a complexidade do desenvolvimento de aplicativos corporativos. O objetivo da Spring não se limita ao desenvolvimento do lado do servidor. De uma simplicidade, testabilidade e perspectiva de acoplamento frouxo, qualquer aplicativo Java pode se beneficiar da primavera. Simplificando, a primavera é uma inversão leve de controle (IOC) e estrutura de contêiner orientada para a seção (AOP).
A SpringMVC é um produto subsequente do Springframework, separando os papéis de controladores, objetos de modelo, despachantes e objetos manipuladores. Essa separação os torna mais fáceis de personalizar.
Mybatis é uma estrutura de camada de persistência baseada em Java. O Mybatis fornece uma estrutura de camada de persistência, incluindo mapas SQL e objetos de acesso a dados (DAO), que elimina a configuração manual de quase todo o código e parâmetros JDBC e a recuperação dos conjuntos de resultados. O Mybatis usa XML simples ou anotações para configuração e mapeamentos brutos para mapear interfaces e Java para registros no banco de dados.
1. Download Eclipse
Faça o download http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr
Escolha a versão que você deseja
2. Crie um novo projeto Maven
Selecione Arquivo> Novo> Projeto Maven
Você pode ver a seguinte interface
Clique em Avançar para ver a seguinte interface. Selecionamos o Maven-Arquetype-WebApp
Clique em Avançar para ver. O ID do grupo é o nome do pacote, e o ID do artefato é o nome do projeto. Aqui entramos ID do grupo = com.cjt, artefato id = myMaven.
Por fim, clique em Concluir para criar com êxito o projeto
3. Preparação antes da operação do projeto
Depois de criar um novo projeto, você pode ver um erro, causado pelo caminho de construção e pela falha na introdução do pacote Javaee.
1) Defina o caminho de construção
Clique com o botão direito do mouse no projeto do projeto> Caminho de construção-> Configure o caminho de construção…
Em seguida, selecione Bibliotecas
Maven seleciona uma biblioteca por padrão. Isso está errado. Vamos clicar duas vezes para editar.
Na interface a seguir, escolhemos o JRE alternativo ou o espaço de trabalho JRE. Aqui escolhemos JRE alternativo.
2) Introduzir o pacote javaee
Apresentando o pacote javaee no pom.xml
<!-importar pacote java ee jar-> <pendency> <puperid> javax </groupiD> <TRARFACTID> javaee-api </stifactId> <versão> 7.0 </versão </dependency>
4. Configurações de arquivo de configuração do projeto
1) Defina Pom.xml
Agora configuramos o pom.xml e baixamos o pacote JAR. Este processo pode ser um pouco lento
Pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cjt</groupId> <artifactId>MyMaven</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>TestMaven01 Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- spring version number --> <spring.version>4.0.2.RELEASE</spring.version> <!-- mybatis version number --> <mybatis.version>3.2.6</mybatis.version> <!-- log4j log file management package version --> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- Import java EE Jar Package-> <Depencency> <Grupid> javax </groupId> <TRAFACTID> javaee-api </artifactId> <versão> 7.0 </versão> </dependency> <!-Spring Core Package-> <spendency> <voundid> org.springFramework </purpuld> <stroftid> spring-cor-cors </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <Versão> $ {spring.version} </siers> </dependency> <pendecency> <voundid> org.springframework </frupiD> <TRAFACTID> spring-tx </artifactId> <sipers> $ {spring.version} </sipers> </dependency> <Pendency> <PuerDid> ou springflam} <TRAFACTID> spring-jdbc </artifactId> <versão> $ {spring.version} </version> </dependency> <pendencency> <voundid> org.springframework </purpuld> <stifactId> spring-webmvc </artifactId> <bours> $ {spring.version} <PuerpId> org.springframework </frupiD> <stifactId> Spring-AOP </ArtifactId> <Versão> $ {spring.version} </siers> </dependency> <pendency> <purgid> org.springframework </groupid> <ArtifactId> spring-concontext-sworport </serrerftty </serreriSt </versão </groupid> <stifactid> spring --ConText-suport </SUSTIFTIF </versão </siERSTIFTIFTIF </versão </versão </serstIrf> </versão </siERSTIFTIFTIF) </dependency> <pendency> <puriid> org.springframework </frupiD> <TROTIFACTID> Spring-test </ArtifactId> <versão> $ {spring.version} </versão> </dependency> <!-MyBatis Core Package-> dependência> <purbid> <brougId> org.myBatis </GrupoId> ArtiF </GroupId> ArtiF </GroupId> ArtiF </GroupId> </GroupId> </GroupId> </GroupId> </GroupId> </GroupId> <versão> $ {mybatis.version} </version> </dependency> <!-mybatis/spring package-> <pendency> <rouprouid> org.mybatis </groupiD> <TarfactId> mybatis-spring </artifact> <versão> 1.2.2 </versão </dependência> <! <GrupId> javax </frupId> <TRAFACTID> javaee-api </artifactId> <versão> 7.0 </versão> </dependency> <!-importar mysql database link jar-> <spendency> <puperid> mySql </groupid> <futifactid> <sussql-connector-java> </groupid> <fristifactid> <fonSqlEctem> jAtsector-Java> MySQL </groupid> <Farfactid> <SersiSshSERSSERSO> jAtrect. </dependency> <!-Importe o pacote JAR do DBCP para configurar o banco de dados em ApplicationContext.xml-> <Ependency> <PuerpId> commons-dbcp </groupid> <stifactId> commons-dbcp </stifactId> <suply> 1./versão </dependens> <! <ArtifactId> jstl </artifactId> <versão> 1.2 </version> </dependency> <!-Pacote de gerenciamento de arquivos de log-> <!-log start-> <pendency> <puperid> log4j </groupiT> <stifactId> log4j </stifactid> <version> $ {Log4j.version} <Depencency> <PuerpId> com.alibaba </frugiD> <stifactId> fastjson </artifactId> <versão> 1.1.41 </version> </dependency> <pendency> <puperid> org.slf4j </groupid> <stifactId> slf4j-api </artifactid> <versão <versão>: <Depencency> <GroupId> org.slf4j </foupiD> <TRARFACTID> SLF4J-LOG4J12 </ARTIFACTID> <Versão> $ {slf4j.version} </sipercence> </dependency> <!-Log end-> <! <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- Upload component package --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <Grueid> Commons-Io </foupid> <TarifactId> Commons-Io </sutifactId> <Version> 2.4 </version> </dependency> <pendesency> <puperiD> commons-codec </groupid> </dependência> Commons-codec </artiftid> </versão> 1.9 </sunder> </dependência> </dependência> </dependência> <FinalName> TestMaven01 </finalName> </fruct> </project>2) Crie jdbc.properties
driver = com.mysql.jdbc.driverurl = jdbc: mysql: // localhost: 3306/testUserName = rootpassword =#define o número da conexão inicial inicialSize = 1#define o número máximo de conexão maxativo
3) log4j.properties
### set log levels ####log4j.rootLogger = debug , stdout , D , Elog4j.rootLogger = debug , stdout , D### output to the console ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outLog4j.appender.stdout.layout = org.apache.log4j.patternlayout#log4j.appender.stdout.layout.conversionPattern = %d {absoluto} %5p %c {1}: %l - %m %nLog4j.styl.st.Stout.St.St.St.St.St.St.StySt.St.St.StyStyT.St.St.Stysout.St.StySt.StyStyT.StyStyT.St.StyT.St.StyT.Stysout. %-d {yyyy-mm-dd hh: mm: ss} [%c]-[%p]%m%n ### saída para o arquivo de log ### log4j.appender.d = org.apache.log4j.dailyrollingFileapPenderLog4j.Append.D.File = ${springmvc.root}/WEB-INF/logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d {yyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n ### Salvar informações de exceção para separar o arquivo ### log4j.appender.d = org.apache.log4j.dailyrollingFilEapPenderLog4j.append.d.file = $ {springmvc.root} /web-inf/logs/error.log log4j.appender.d.append = truelog4j.appender.d.threshold = erro log4j.appender.d.layout = org.apache.log4j.patternlayoutlog4j.layout = org.apache.log4j.patternlayoutlog4j.layout = orgache.log4j.patternlayoutlog4j.layout %-d {yyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n4) Spring-mvc.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! Scan @pacote Automaticamente o pacote para que o springmv pense que pensa que a classe ADNOTENHATE da classe the Classk <Contexto: Componente-Scan Base-Package = "com.cjt.controller"/> <!-Evite baixar arquivos quando o IE executar Ajax e retornar a JSON-> <bean id = "mapingjacksonhttpmessageconverter"> <nome da propriedade "> suportedmediaTeSet"> <tist> <Value> text/hmt/hm) </bean> <!-Função de anotação SpringMVC para concluir o mapeamento de solicitações e anotações pojos-> <Bean> <Propriedade name = "messageconverters"> <list> <ref bean = "mapingjacksonhttpmessageconverter"/<!-json converter-</list> </list> Configuração do modo de visualização-> <Bean> <!-Meu entendimento da configuração aqui é prefixar e sufixar automaticamente a sequência retornada pelo método da ação subsequente para se tornar um endereço URL disponível-> <propriedades name = "prefixar" usoping = "/web-inf/jsp/"/> <nome da propriedade = "sufix" valuation ". Se você não usar o upload do arquivo, não precisará configurá -lo. Obviamente, se você não corresponder, não há necessidade de introduzir o pacote de componentes de upload no arquivo de configuração-> <bean id = "multipartreSolver"> <!-codificação padrão-> <names name = "defaultEncoding" value = "utf-8" /> <!-Tamanho do arquivo maximum-> <nome da 5. Valor na memória -> <propriedade name = "maxinMemorySize" value = "40960"/> </i bean> </ Beans>
5) Spring-mybatis.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! -> <bean id = "PropertyConfigurer"> <propriedade name = "location" value = "classPath: jdbc.properties" /> </shean> <bean id = "dataSource" Destroy-method = "Close"> da propriedade "urclassName" = "$ {driver}" /> <nome "> value = "$ {nome de usuário}" /> <propriedade name = "senha" value = "$ {senha}" /> <!-inicialize o tamanho da conexão-> <propriedade name = "Initialsize" value = "$ {Initialsize}"> < /propriedade> <!-Número máximo do pool de conexões-> <name da propriedade = "Maxactive" <propriedade name = "maxidle" value = "$ {maxidle}"> </propriedade> <!-pool de conexão mínima ociosa-> <propriedade name = "minidle" value = "$ {minidle}"> </propriedade> <!-obtenha o tempo de espera máximo de conexão-> <names = "maxwait"> </value = "$ {MAX! e mybatis, nenhum arquivo de mapeamento de configuração mybatis-> <bean id = "sqlSessionFactory"> <nome da propriedade = "DataSource" ref = "DataSource"/> <!-varredura automática de maping.xml arquivos-> <names = "mapperlocations") O nome do pacote em que a interface Dao está localizada, a primavera encontrará automaticamente a classe sob ele-> <Bean> <propriedade name = "BasEpackage" value = "com.cjt.dao"/> <names name = "sqlSessionFactoryBeanName" Value = "sqlSessionFactory"> </propriedade> </ben -> <bean id = "transactionManager"> <propriedade name = "DataSource" ref = "DataSource"/> </shean> </beans>Todos os arquivos acima são criados na pasta Recursos
5. Gere automaticamente o código do banco de dados
1) Crie uma nova tabela
Primeiro, criamos uma nova tabela user_t, e os campos são os seguintes:
2) Pacote de download
Os pacotes de download incluem: mybatis-3.2.6.jar , mybatis-generator-core-1.3.3.jar, mysql-conector-java-5.1.39-bin.jar
3) Executar - gerar código automaticamente
Crie uma nova pasta, incluindo os seguintes arquivos
generatorconfig.xml é o arquivo XML que gera o código, e o conteúdo é o seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype geratorConfiguration public "-// mybatis.org//dtd mybatis generator configuration 1.0 //" <!-driver de banco de dados-> <classe de classe local = "mysql-conector-java-5.1.39-bin.jar"/> <contexto id = "db2tables" TargetRuntime = "mybatis3"> <CommentGenerator> <nome da propriedade "suprime"/"true"/> <! name = "supressallComments" value = "true"/> </commentGenerator> <!-URL do link do banco de dados, nome de usuário, senha-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" confencturl = "jdbc: mySql: // localhost: 3306/test <navatyperesolver> <propriedade name = "forcebigDecimals" value = "false"/> </javatyperesolver> <!-gerar o nome do pacote e a localização do modelo-> <javamodelGenerator TargetPackage = "com.cjt.Dain "project =" sc "> <nome da names) name = "trimStrings" value = "true"/> </javamodelGenerator> <!-gerar o nome do pacote e a localização do arquivo de mapeamento-> <sqlmapgenerator TargetPackage = "com.cjt.mapping" TargetProject = "src"> <names name = "enablesubpackages") " of the DAO --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.cjt.dao" targetProject="src"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- The table to be generated is the table name in the database or the view name domainObjectName is the entity class name --> <tabela tableName = "user_t" domainObjectName = "user" enableCountByExample = "false" enableUpDateByExample = "false" enableteleteByExample = "false" EnableSelectByExample = "false" SelectByExampleeryId = "false> </tabela <//ContextBy)
Em seguida, usamos o comando cmd para inserir a pasta recém -criada e entrar:
java -Jar mybatis- -core -core -1.3.3.jar -configfile generatorconfig.xml -Overwrite
Finalmente, o código é gerado.
Nota: O código é gerado automaticamente aqui através da linha de comando e os leitores também podem gerá-lo através do plug-in Eclipse.
6. Iniciar o código
Crie um novo pacote, como segue: (as setas são todos os códigos gerados automaticamente acima)
IuserService.java
interface pública iuserService {public user getUserById (int id); }UserServiceImpl.java
@ServicePublic Class UserServiceImpl implementa IUSERSERVICE {@AUTOWIRED PRIVADO IUSERDAO Userdao; public userserviceImpl () {System.out.println ("UserServiceImpl"); } usuário público getUserById (int id) {return userdao.selectByPrimaryKey (id); }}UserController.java
@Controlador@requestmapping ("/user") classe pública UserController {public userController () {System.out.println ("userController"); } @Resource Private iUserService UserService; @RequestMapping ("/showUser") public string toIndex (solicitação httpServletRequest, modelo modelo) {System.out.println ("userController showUser"); int id = integer.parseint (request.getParameter ("id")); Usuário do usuário = UserService.getUserById (ID); model.addattribute ("Usuário", usuário); retornar "showUser"; }}Crie um novo diretório JSP em Web-Inf e crie um novo arquivo showUser.jsp abaixo
showuser.jsp
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" import = "java.util.*, com.cjt.domain.*"%> <! "http://www.w3.org/tr/html4/loose.dtd"><html> <head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> insert title aqui </title $ {user.username} </body> </html>Finalmente, anexe web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xmls/javaee/web-web-web-web-sup_3s) Aplicativo da web criado </sisiber-name> <!-Arquivos de configuração de primavera e mybatis-> <Context-Param> <am-name> contextConfigLocation </amam-name> <amam-value> classe: spring-mybatis.xml </param-value> </context-param> <!-codificação-filtro> filtro> filtro> filter> </filter> </param-value> </context-param> <!-filtro-name <filter>> filtro> <filter-class> org.springframework.web.filter.characterencodingFilter </limter-Class> <sync-suported> true </sync-supportd> <init-param> <amam-name> codificação </param> <aames-value> </irf-8/param-name> codificação </param> <amaMplue> </-8 </param-name> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring listener--> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Prevent Spring memory from overflowing listener--> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <iit-param> <amam-name> contextConfigLocation </param-name> <amam-value> ClassPath: spring-mvc.xml </param-value> </irit--param> <lound-on-startup> 1--Mervled> </sertup> </sertlet> <sync-suported> True-Merverlet </sertlet> <Mame-name> Springmvc </servlet-name> <!-Aqui você pode configurar *.do, correspondendo ao hábito do sufixo de struts-> <url-tattern>/</url-tattern> </servlet-mapping> <lorde-----quernty-list> <lorde-file>/Webrates.jsp </welcomeping> </-welclefile> <lorde-file-list>
Acima, a geração de código está completa.
Os projetos podem ser baixados: https://github.com/cjt321/mavenpirngmvcmybatis
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.