Aprendi recentemente Java e descobri que o Mybatis aparece com bastante frequência no recrutamento de Java, que pode ser a estrutura do banco de dados ORM que é usada com mais frequência no desenvolvimento de Java. Então, eu ia estudar a integração da Spring Boot e Mybatis.
1. Adicione a seguinte configuração no arquivo pom.xml
<Dependences> <pendency> <voundiD> org.springframework.boot </groupiD> <TRATIFACTID> Spring-boot-starter-web </artifactId> </dependency> <pendence-> SCROTIDED-SCROOT.SpringFramework.boot </GroupId> <TifactId> SCROOT-STARTERFERT-TELTR-TEMBRO-TEMBRO-TRESTRO-TRANHOTWOOT </Groupid> </dependency> <pendency> <voundid> org.springframework.boot </frugiD> <stifactId> spring-boot-starter-jdbc </artifactId> </dependency> <pendency> <voundid> mysql </groupid> <tifactid> <ssql-Connector-Java-Java <Depencency> <PuerpId> com.alibaba </frugiD> <stifactId> druid </sutifactId> <versão> 1.0.29 </version> </dependency> <pendence> <puperid> org.springframework.boot </frugid> </Artifactid> spring-boot starer-data-jpa dependência mybatis. Você não pode usá-lo sem adicioná-lo-> <Ependency> <roupidId> org.mybatis.spring.boot </foupiD> <TarifactId> mybatis-spring-boot-starter </artifactId> <versão> 1.3.2 </versão> </dependência> <! <roupidId> org.mybatis.generator </proupId> <TRARFACTID> mybatis-generator </stutifactId> <versão> 1.3.5 </versão </type> pom </type> </dependency> <!-Esta é uma dependência que gera automaticamente mapeadores, etc., e deve ser adicionado https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> </dependencies> <build> <flugins> <lugin> <plugId> org.springframework.boot </groupid> <stifactId> primavera-boot-maven-plugin </stutifactId> </flugin> <clugin> <proupId> org.mybatis.generator </grupid> <TifactId> myblerator-gineator <Versão> 1.3.2 </siers> <figuration> <!-Endereço para arquivo de configuração-> <!-<figurationfile> src/main/resources/mybatis-generator/generatorconfig.xml <//pluctfile>-> <bose <bose> <cunctose> <curtwrite> <//pluftite>
2. Configurar o banco de dados e a digitalização mybatis no Application.Properties Configuration File
spring.dataSource.driver-class-name = com.mysql.jdbc.driverspring.dataSource.url = jdbc: mysql: // localhost: 3306/yddy? useunicode = true & caracterencodin g = utf-8 & servertimeZone = utcspring.datasource.username = rootspring.dataSource.password = 123456mybatis.config-locations = ClassPath: mybatis-config.xml# Arquivo Mapper Mybatis.mapper-Locations = ClassPath: Mapper/ *. Xml #Write * diretamente aqui, o que é benéfico para o SQL personalizado e a gravação xxxxext.xml posteriormente. Ele digitaliza automaticamente esses arquivos. Não há necessidade de alterar a configuração mybatis.type-aliases-package = com.dameiweb.learn.modelogging.level.com.dameiweb.learn.dao = depadispatiTis.config = mybatis File Name#mybatis.mApperLocations = mapper = mybatis File Nome do arquivo Pacote de classe Caminho#mybatis.typeHandlerspackage = Tipo Handlers Pacote Pacote Pacote#mybatis.check-config-location = Verifique se a configuração existe, geralmente é nomeado Mybatis-config.xml#mybatis.executype = Execution Mode. O padrão é simples
3. Configuração mybatis e configuração automática
Crie um novo generatorconfig.xml e mybatis-config.xml no diretório de recursos. O conteúdo é o seguinte:
Conteúdo geradorconfig.xml
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype geratorConfiguration public "-// mybatis.org//dtd mybatis generator configuration 1.0 //" <ClassPathentry Location = "C: /users/nick/.m2/repository/mysql/mysql-connector-java/5.1.46/mysql-connection-java-5.1.46.jar"/> context = "dbGables" value = "true"/> <propriedade name = "supressorlcomments" value = "true"/> </comentário ConnectionUrl = "JDBC: mysql: // localhost: 3306/yddy? useUnicode = true & caracterEncoding = utf-8 & servertimeZone = utc" userID = "root" senha = "123456"> </jdbconnection> <navatyPersolver> <weenMeNeNB) </javatyperesolver> <!-Gere Localização de armazenamento da classe Model-> <JavamodelGenerator TargetPackage = "com.dameiweb.learn.model" TargetProject = "src/main/java"> <nome da propriedade = "enablesbackages" = "True"/> <! name = "trimStrings" value = "false"/> </javamodelGenerator> <!-Gere local de armazenamento de arquivos do mapa-> <sqlmapgenerator TargetPackage = "Mapper" TargetProject = "Src/main/Recursos"> Nome da propriedade = "EnablesubPackages" = "True"/> </sqlm Gere o código de código fácil de usar = "AnnoTatedMapper", gerar modelo Java e objeto de mapeador baseado em anotação tipo = "mixedmapper", gerar modelo Java baseado em anotação e um objeto de mapero correspondente tipo = "xmlMapper", gera sqlmap xml e interface independente-> <navaclientGenerator " TargetPackage = "com.dameiweb.learn.dao" TargetProject = "src/main/java"> <propriedade name = "enablesubpackages" value = "true"/> </javaclientgenerator>
Conteúdo de mybatis-config.xml:
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd Config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtddddtddddddtddddslin> value = "true"/> <configuração name = "cacheenabled" value = "true"/> <definição name = "lazyloadingEnabled" value = "true"/> <configuração name = "agressivelazyLoading" value = "true"/> <setembro name = "multipleResulsetsetsenabled" = "" "/> <fastname =" uSecolnumlBel "" value = "false"/> <configuração name = "AutomAppingBeHavior" value = "parcial"/> <Configuração name = "defaultExecutype" value = "simples"/> <Configuração name = "mapundersCoretocameLCase" Value = "True"/> <Nome da configuração = "LocalCacHope" = "session"/> <fet Nome = "JDB" <typeAalias alias = "integer" type = "java.lang.integer" /> <typeAlias alias = "long" type = "java.lang.long" /> <typeAlias Alias = "hashmap" type = "java.util.hashmap" /> <tiatiaias alias = " <typeAlias alias = "ArrayList" type = "java.util.arraylist" /> <typeAlias alias = "linkedList" type = "java.util.linkedlist" /> < /typeAliases> </figuration>
Dessa forma, configuramos a Spring Boot, Mybatis e Mybatis para gerar automaticamente mapeadores e entidades. Dessa forma, quando queremos gerar a entidade e o mapeador de uma determinada tabela, precisamos adicionar apenas o conteúdo a seguir após a tag JavaclientGenerator no generatorconfig.xml.
Aqui temos a tabela YD_Movies como exemplo (não use números plurais no nome da tabela principal do banco de dados. Este nome da tabela deve ser meu cérebro antes, então eu fiz um nome de plural)
<!-gerar a tabela correspondente e o nome da classe-> <tabela tableName = "yd_movies" domainObjectName = "filme" EnableCountByExample = "false" enableUpDateByExample = "false" enableteleteByExample = "false" EnableSelectByExample = "false") javatype = "java.lang.string" jdbctype = "varchar" /> <colunroverride column = "Cover_photos_loc" javatype = "java.lang.string" jdbctype = "var" /> <columnoverride column = "" Pubdates " jdbctype = "varchar" /> <colunnoverride column = "fotografias_origin" javatype = "java.lang.string" jdbctype = "var" /> <columnOverride column = "fotografia_origin_loc" javatype = "java.lang.string" column="languages" javaType="java.lang.String" jdbcType="VARCHAR" /> <columnOverride column="awards" javaType="java.lang.String" jdbcType="VARCHAR" /> <columnOverride column="summary" javaType="java.lang.String" jdbctype = "varchar" /> < /tabela> <!-colunnoverride usa essa tag para impedir que o mybatis gere arquivos xxxxwithblobs quando o tipo de campo do banco de dados é o texto. ->
Em seguida, clique em Projetos MAVEN no lado direito da Idea, e você pode ver o Mybatis-Generate: Gere sob Mybatis-Generate e clique duas vezes em Mybatis-Generate: Gere.
** Nota do gerador, também pode ser considerado um bug
É quando é gerado e, na segunda geração, o DAO e a entidade serão diretamente substituídos, enquanto o Mapper.xml será diretamente anexado, resultando em um erro na execução e é difícil de encontrar. **
4.MYBATIS SQL Custom
Quando precisamos personalizar o SQL, também não podemos colocá -los no arquivo de mapeador. Caso contrário, quando os campos da tabela de banco de dados forem atualizados e precisam ser regenerados, nosso SQL personalizado será substituído? Portanto, precisamos criar um novo arquivo moviemapperext.xml no diretório do moviemapper.xml e colocar o SQL personalizado aqui. O exemplo é o seguinte:
Conteúdo do arquivo movieMappeRext.xml
<? xml versão = "1.0" coding = "utf-8"?> <! namespace = "com.dmeiweb.learn.dao.movieMapper"> <select id = "selectByCondition" resultMap = "baseresultmap" parameterType = "com.dmeiweb.learn.dto.movieRereououn> select yd_movies* de yd_mies em ydeb.mearn. YD_Countries.Movie_ID junte -se a YD_Countries em yd_r_movie_countries.country_id = cou.id junção esquerda yd_r_movie_categy on yd_movies.id = yd_r_movie yd_r_movie_category.category_id = cat.id junte -se yd_r_movie_actor em yd_movies.id = yd_r_movie_actor.movie_id junção yd_actors a em yd_r_movie_ator.actor_id = a.id) onde yd_actor ! = null "> e yd_movies.title como"%" #{movierequest.title}"%"</if> <if test =" movierequest.country! = null "> e cou.id = #{movierequest.country} </if> <fest =" movierequest. #{moviequest.country} </if> <fest = "movierequest. #{moviEquest.country} </if> <fest =" moviErequest. #{movierequest.category} </if> <if test = "movierequest.year! = null"> e ano = #{movierequest.year} </if> <if test = "movierequest.rate! <( #{movierequest.rate} +1) </if> <if test = "movierequest.subtype! = null"> e yd_movies.subtype = #{movierequest.subtype} </if> yeary yd)Resumir
O exposto acima é a bota de primavera introduzida pelo editor. Ele integra Mybatis e gera automaticamente mapeadores e entidades. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!