He estado aprendiendo Java recientemente y descubrí que MyBatis aparece con bastante frecuencia en el reclutamiento de Java, que puede ser el marco de la base de datos ORM que se usa con más frecuencia en el desarrollo de Java. Así que iba a estudiar la integración de Spring Boot y MyBatis.
1. Agregue la siguiente configuración en el archivo pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </pendency> <pendency> <moupid> org.springframework.boot </proupid> <artifactid> spring-boot-starter-jdbc </artifactid> </dependency> <ependency> <grupoD> mysql </groupid> <artifactid> mysql-connector-java </artifactid <cope> <cope> <Spendency> <MoupRid> com.alibaba </proupid> <artifactid> druid </artifactid> <verserse> 1.0.29 </verversion> </pendency> <spendency> <grupo) MyBatis Dependence. No puede usarlo sin agregarlo-> <pendency> <grupid> org.mybatis.spring.boot </groupid> <artifactid> mybatis-spring-boot-starter </artifactid> <versión> 1.3.2 </versión> </dependence> <!-Esta es una dependencia que genere automáticamente mapeadores, etc., debe ser agregado-> <fependicidad> <MoupRid> org.mybatis.Generator </proupid> <artifactid> myBatis-Generator </artifactid> <verserse> 1.3.5 </verversion> <proy> pom </pype> </pendency> <!-Esto es una dependencia que genera automáticamente mapeadores, etc., y debe agregarse https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator--core-> <pendency> <mupoupid> org.mybatis.generator </groupid> <artifactid> mybatis-generator-core </artifactid> <versole> <glugins> <glugin> <grupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </glugin> <glugin> <proupid> org.mybatis.generator </proupid> <artifactid> mybatis-generator-maven-plugin </artfactid> </artfactid> </artfactid> <Versión> 1.3.2 </versión> <figuration> <!-Dirección para el archivo de configuración-> <!-<ConfigurationFile> src/main/recursos/mybatis-generator/generatorConfig.xml </ConfigurationFile>-> <Verbose> true </verbose> <Overwrite> true </overwrite> </configure> </glugin> </complementos> </brodor>
2. Configurar la base de datos y el escaneo de mybatis en el archivo de configuración de la aplicación.
spring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.url = jdbc: mysql: // localhost: 3306/yddy? useunicode = true & caractericodin g = UTF-8 & SERVEREMEZONE = UTCSPRING.DATASOURCE.USERNAME = ROOTSPRING.DATASOURCE.PASSWORD = 123456MYBATIS.CONFIG-LOCACIONES = ClassPath: MyBatis-Config.xml# Archivo mapper mybatis.mapper-locations = classpath: mapper/ *. xml #Write * directamente aquí, que es beneficioso para SQL personalizado y escribiendo xxxext.xml más tarde. Escanea automáticamente estos archivos. No es necesario cambiar la configuración mybatis.type-aliases-package = com.dameiweb.learn.modellogging.level.com.dameiweb.learn.dao = debug#mybatis.config = myBatis Nombre de archivo#mybatis.mapperLocations = mapper xml ruta#mybatis.TypeHandlerspackage = Tipo de manejadores PAQUETE DE PROCESOR Ruta#mybatis.check-config-location = verifique mybatis Si la configuración existe, generalmente se llama mybatis-config.xml#mybatis.executortype = modo ejecutivo. El valor predeterminado es simple
3. Configuración de mybatis y configuración automática de mapeadores
Cree un nuevo GeneratorConfig.xml y MyBatis-Config.xml en el directorio de recursos. El contenido es el siguiente:
Contenido generadorconfig.xml
<? xml versión = "1.0" encoding = "utf-8"?> <! DOCTYPE GeneratorConfiguration public "-// mybatis.org//dtd Configuración del generador de MyBatis 1.0 // en" "http://mybatis.org/dtd/mybatis-Generator-config_1_0.dtdd" <200 <classpathEndry ubicación = "c: /users/nick/.m2/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar"/> <context id = "db2tables" targertRuntime = "mybatis3"> <commentGenerator> <perties name = "db2tables" valor = "true"/> <propiedad name = "supressallcomments" value = "true"/> </commentGenerator> <!-Contraseña de la cuenta de la dirección de enlace de base de datos contraseña-> <jdbcconnection driverClass = "com.mysql.jdbc.driver" ConnectionUrl = "jdbc: mysql: // localhost: 3306/yddy? useUnicode = true & caracterSencoding = utf-8 & serververezone = utc" userId = "root" contraseña = "123456"> </jdbcconnection> <JavatyPeresolver> <producción de propiedad = "ForceBigDeCimals" valor "Valor"/"" </javatyperesolver> <!-Generar la ubicación de almacenamiento de clase de modelo-> <javaModelGenerator TargetPackage = "com.dameiweb.learn.model" targetProject = "src/main/java"> <Property name = "habilitueSubpackages" value = "true"/> <!-Los espacios antes y después del valor regresado de la base de datos están limpios. name = "trimStrings" value = "false"/> </javamodelGenerator> <!-Generar la ubicación de almacenamiento de archivos de mapa-> <sqlmapGenerator TargetPackage = "mappper" targetProject = "src/main/recursos"> <Property name = "AableSubpackages" Value = "True"/> </sqlMapGenerator> <!-Generate Dao, Generate Code, n. Genere un código de uso fácil de usar Tipo = "AnnotatedMapper", genere el modelo Java y el tipo de objeto mapper basado en anotaciones tipo = "mixedmapper", genere el modelo Java basado en anotaciones y el tipo de objeto mapper correspondiente = "xmlmapper", genere archivos sqlmap xml e interfaz de mapeador independiente-> <javaclientgenerator type = "xmlmapperer" TargetPackage = "com.dameiweb.learn.dao" TargetProject = "src/main/java"> <propiedad name = "habilsubpackages" value = "true"/> </javaclientGenerator> </context> </generadorconfiguration>
Contenido de mybatis-config.xml:
<? xml versión = "1.0" encoding = "utf-8"?> < value = "true"/> <setting name = "cacheenabled" value = "true"/> <setting name = "lazyLoadingEnabled" value = "true"/> <setting name = "agressiveSliveLAweLoading" value = "true"/> <setting name = "multipleReSultSetSeSEntEdled" value = "true"/> <setting name = "useColumnLabel" value = "true"/> <name = "use" usa "usa" usa "usa" usa ". value = "false"/> <setting name = "automapplingbehavior" value = "parcial"/> <setting name = "defaultExeCutortype" value = "simple"/> <setting name = "mapunderscoretocamelcase" value = "true"/> <setting name = "localCacheScope" value = "sesión"/> <name de configuración = "jdbctypefornull" value = "neco/" nelle/"necúrelo" <typealias alias = "Integer" type = "java.lang.integer" /> <typealias alias = "long" type = "java.lang.long" /> <typealias alias = "hashmap" type = "java.util.hashmap" /> <typealias alias = "linkedhashmap" type = "java.utilhmap" <typealias alias = "ArrayList" type = "java.util.arrayList" /> <typealias alias = "linkedlist" type = "java.util.linkedlist" /> </pealiases> </figuration>
De esta manera, hemos configurado Spring Boot, MyBatis y MyBatis para generar automáticamente mapeadores y entidades. De esta manera, cuando queremos generar la entidad y el mapeador de una determinada tabla, solo necesitamos agregar el siguiente contenido después de la etiqueta JavaclientGenerator en GeneratorConfig.xml.
Aquí tenemos la tabla YD_Movies como ejemplo (no use números plurales en el nombre de la tabla de la base de datos principal. Este nombre de la tabla debe ser mi cerebro antes, así que hice un nombre plural)
< javatype = "java.lang.string" jdbctype = "varchar" /> <columnOverride column = "cover_photos_loc" javatype = "java.lang.string" jdbctype = "varchar" /> <columnOverride columna = "pubdates" javatype = "java.lang.lang.lang" jdbype "JDBEHBE" JDBYPE "JDBYPE" JDBTYPE "JDBYPE" JDBTYPE "JDBYPE" JDBTYPE "JDBTYPE" JDBYPE = "VAR VAR VARITIT /> <columnOverride column = "fotografía_origin" javatype = "java.lang.string" jdbctype = "varchar" /> <columnoberride column = "fotografías_origin_loc" javatype = "java.lang.string" jdbctype = "varchar" /> <columna de columnaverride = "languaguros" languemillas " javatype = "java.lang.string" jdbctype = "varchar" /> <columnOverride column = "premios" javatype = "java.lang.string" jdbctype = "varchar" /> <columnOverride column = "sumario" javatype = "java.lang.string" jdbctypepe = "Varchar" /"sumario" javatype = "java.lang.string" jdbctypepe = "Varchar" /"sumario" javatype = "java.lang.string" jdbctypepe = "Varchar" /"sumario" javatype = "java.lang.string" jdbctypepe = "Varchar" /"sumario" javatype = "java.lang.string" jdbctype.e </table> <!-ColumnOverride usa esta etiqueta para evitar que mybatis genere archivos xxxxwithblobs cuando el tipo de campo de la base de datos es texto. ->
Luego haga clic en Maven Projects en el lado derecho de la idea, y puede ver mybatis-Generate: Genere bajo mybatis-Generate y haga doble clic en MyBatis Generado: Generar.
** Nota del generador, también se puede decir que es un error
Es cuando se genera, y en la segunda generación, DAO y la entidad se sobrescribirán directamente, mientras que MAPPER.xml se agregará directamente, lo que dará como resultado un error en la ejecución y es difícil de encontrar. **
4. Mybatis personalizado SQL
Cuando necesitamos personalizar SQL, no podemos ponerlos en el archivo mapper también. De lo contrario, cuando los campos de la tabla de la base de datos se actualicen y necesiten ser regenerados, ¿se sobrescribirá nuestro SQL personalizado? Por lo tanto, necesitamos crear un nuevo archivo MoviEMapeExt.xml en el directorio de MoviEMapper.xml y poner el SQL personalizado aquí. El ejemplo es el siguiente:
MOVIEMAPPEREXT.XML Contenido del archivo
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "com.dmeiweb.learn.dao.moviEmapper"> <select id = "selectByCondition" resultMap = "BaseSultMap" Parametertype = "com.dmeiweb.learn.dto.movierequest"> Seleccionar yd_movies.* From Yd_Movies dejó a YD_R_MR_MOVIE en yd_movies.id = yd_r_movie_countries.movie_id izquierdo unirse yd_countries cou en yd_r_movie_countries.country_id = cou.id de izquierda yd_r_movie_categy yd_r_movie_category.category_id = cat.id izquierdo se unió yd_r_movie_actor en yd_movies.id = yd_r_movie_actor.movie_id izquierdo se une yd_actors a yd_r_movie_actor.actor_id = a.id donde yd_movies.status = 1 <if test = " ! = null "> y yd_movies.title como"%" #{movierequest.title}"%"</if <if test =" movierequest.country! = null "> y cou.id = #{movierequest.country} </if <if test =" movieRequest.equest! = null "> y Cat.id"> #{movierequest.category} </if> <if test = "movierequest.year! = null"> y año = #{movierequest.year} </if> <if test = "movierequest.rate! = null"> y tasa> = #{mOvierequest.rate} </if> <if if = "movierequest! =" <( #{movierequest.rate} +1) </if> <if test = "movierequest.subtype! = null"> y yd_movies.subtype = #{movierequest.subtype} </if> grupo por yd_movies.id ordenar por actualizado_at desc, año </select> </mApper>Resumir
Lo anterior es la bota de primavera presentada por el editor. Integra mybatis y genera automáticamente mapeadores y entidades. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!