ฉันได้เรียนรู้ Java เมื่อเร็ว ๆ นี้และพบว่า mybatis ปรากฏค่อนข้างบ่อยในการสรรหา Java ซึ่งอาจเป็นกรอบฐานข้อมูล ORM ที่ใช้บ่อยขึ้นในการพัฒนา Java ดังนั้นฉันจะศึกษาการบูรณาการของ Spring Boot และ Mybatis
1. เพิ่มการกำหนดค่าต่อไปนี้ในไฟล์ pom.xml
<การพึ่งพา> <การพึ่งพา> <roupId> org.springframework.boot </groupid> <ratifactid> Spring-Boot-Starter-Web </Artifactid> </dercture> <การพึ่งพาอาศัย> <loupid> org.springframework.boot </groupid> </permentency> <predency> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Jdbc </artifactid> </การพึ่งพาอาศัย> <การพึ่งพา </permentency> <predency> <roupId> com.alibaba </groupId> <ratifactid> druid </artifactid> <version> 1.0.29 </version> </การพึ่งพา> <การพึ่งพา> <roupid> org.springframework.boot </groupid> นี่คือการพึ่งพา mybatis อย่างเป็นทางการ คุณไม่สามารถใช้งานได้โดยไม่ต้องเพิ่ม-> <การพึ่งพา> <roupId> org.mybatis.spring.boot </groupid> <ratifactid> mybatis-spring-boot-starter </artifactid> <persion> 1.3.2 </เวอร์ชัน> <RoupID> org.mybatis.generator </groupId> <ratifactid> mybatis-generator </artifactid> <cersion> 1.3.5 </version> <pey> pom </ply> https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core-> <pendency> <roupid> org.mybatis.generator </groupid> <plugins> <plugin> <roupId> org.springframework.boot </groupid> <ratifactid> Spring-Boot-Maven-Plugin </artifactid> </lugin> <plugin> <Sersion> 1.3.2 </Sention> <การกำหนดค่า> <!-ที่อยู่สำหรับไฟล์การกำหนดค่า-> <!-<ConfigurationFile> SRC/MAIN/Resources/MyBatis-Generator/GeneratorConfig.xml </configurationFile>-> <verbose> True </verbose>
2. กำหนดค่าฐานข้อมูลและการสแกน mybatis ในแอปพลิเคชันไฟล์การกำหนดค่า properties
Spring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.url = jdbc: mysql: // localhost: 3306/yddy? useunicode = true & actiameencodin g = utf-8 & servertimezone = utcspring.datasource.username = rootspring.datasource.password = 123456mybatis.config-locations = classpath: mybatis-config.xml# Mapper File MyBatis.Mapper-Locations = classPath: Mapper/ *. XML #Write * โดยตรงที่นี่ซึ่งเป็นประโยชน์สำหรับ SQL ที่กำหนดเองและเขียน xxxext.xml ในภายหลัง มันสแกนไฟล์เหล่านี้โดยอัตโนมัติ ไม่จำเป็นต้องเปลี่ยนการกำหนดค่า mybatis.type-aliases-package = com.dameiweb.learn.modellogging.level.com.dameiweb.learn.dao = debug#mybatis.config = mybatis ไฟล์การกำหนดค่า#mybatis.mapperlocations แพ็คเกจพา ธ#mybatis.typehandlerspackage = ประเภทตัวจัดการโปรเซสเซอร์พา ธ พาพา ธ#mybatis.check-config-location = ตรวจสอบ mybatis ว่าการกำหนดค่ามีอยู่โดยทั่วไปชื่อ mybatis-config.xml#mybatis.executortype = โหมดการดำเนินการ ค่าเริ่มต้นเป็นเรื่องง่าย
3. การกำหนดค่า mybatis และการกำหนดค่า Mapper อัตโนมัติ
สร้าง GeneratorConfig.xml ใหม่และ mybatis-config.xml ในไดเรกทอรีทรัพยากร เนื้อหามีดังนี้:
เนื้อหา GeneratorConfig.xml
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! DOCTYPE GENERATORATONCONTURAUNT POVER "-// MyBatis.org//dtd MyBatis Generation 1.0 // en" "http://mybatis.org/dtd/MyBatis <classpathentry location = "c: /users/nick/.m2/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar"/> <contextid id = "db2tables" targetruntime = value = "true"/> <property name = "suppressallComments" value = "true"/> </commentGenerator> <!-ฐานข้อมูลลิงก์ที่อยู่บัญชีรหัสผ่าน-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" ConnectionUrl = "JDBC: mySQL: // localHost: 3306/yddy? useUnicode = true & characterencoding = utf-8 & servertimezone = utc" userid = "root" รหัสผ่าน = "123456"> </jdbcconnection> </javatyperesolver> <!-สร้างตำแหน่งที่เก็บคลาสรุ่น-> <JavamodelGenerator TargetPackage = "com.dameiweb.learn.model" เป้าหมาย project = "src/main/java"> <property name = "enablesubpackages name = "trimstrings" value = "false"/> </javamodelgenerator> <!-สร้างตำแหน่งที่เก็บไฟล์แผนที่-> <sqlmapgenerator targetPackage = "mapper" targetProject = "SRC/Main/Resources" สร้างรหัสที่ใช้งานง่าย type = "AnnotatedMapper" สร้างโมเดล Java และคำอธิบายประกอบ Object Object ประเภท = "MixtMapper" สร้างโมเดล Java ที่ใช้คำอธิบายประกอบและประเภทวัตถุ Mapper ที่สอดคล้องกัน = "XMLMApper" สร้างไฟล์ SQLMAP XML targetPackage = "com.dameiweb.learn.dao" targetProject = "src/main/java"> <property name = "ENABLESUBPACKAGES" value = "true"/> </javaclientGenerator> </context>
เนื้อหาของ mybatis-config.xml:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype การกำหนดค่าสาธารณะ "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd value = "true"/> <การตั้งค่าชื่อ = "cacheenabled" value = "true"/> <การตั้งค่าชื่อ = "lazyloadingenabled" value = "true"/> <การตั้งค่าชื่อ = "aggressivelazyloading" value = "true"/> <การตั้งค่า = value = "false"/> <การตั้งค่าชื่อ = "AutomappingBeHavior" value = "บางส่วน"/> <การตั้งค่าชื่อ = "defaultExecUtOstery" value = "simple"/> <การตั้งค่าชื่อ = "mapundersCoretocamelCase" value = "true"/> <typealias alias = "จำนวนเต็ม" type = "java.lang.integer" /> <typealias alias = "long" type = "java.lang.long" /> <typealias alias = "hashmap" type = "java.util.hashmap" /> <typealias alias = "arraylist" type = "java.util.arraylist" /> <typealias alias = "linkedList" type = "java.util.linkedlist" /> < /typealiases> < /การกำหนดค่า>
ด้วยวิธีนี้เราได้กำหนดค่าสปริงบูต mybatis และ mybatis เพื่อสร้าง mappers และเอนทิตีโดยอัตโนมัติ ด้วยวิธีนี้เมื่อเราต้องการสร้างเอนทิตีและผู้ทำแผนที่ของตารางที่แน่นอนเราจะต้องเพิ่มเนื้อหาต่อไปนี้หลังจากแท็ก JavaclientGenerator ใน GeneratorConfig.xml
ที่นี่เรามีตาราง yd_movies เป็นตัวอย่าง (อย่าใช้หมายเลขพหูพจน์ในชื่อตารางฐานข้อมูลหลักชื่อตารางนี้ต้องเป็นสมองของฉันมาก่อนดังนั้นฉันจึงสร้างชื่อพหูพจน์)
<!-สร้างชื่อตารางและคลาสที่สอดคล้องกัน-> <table tablename = "yd_movies" domainobjectName = "ภาพยนตร์" enableCountByExample = "false" enableUpDateByExample = "false" enableteByExample = "FALSE" ENABLESELECTBYEXAMPLE = javatype = "java.lang.string" jdbcType = "varchar" /> <columnoverride column = "cover_photos_loc" javatype = "java.lang.string" jdbctype = "varchargar" /> jdbcType = "varchar" /> <columnoverride column = "photions_origin" javatype = "java.lang.string" jdbctype = "varchar" /> <columnoverride column = "photions_origin_loc" javatype = "java.lang.lang.lang.lang.lang คอลัมน์ = "ภาษา" javatype = "java.lang.string" jdbctype = "varchar" /> <columnoverride คอลัมน์ = "รางวัล" javatype = "java.lang.string" jdbctype = "varcharchar" /> jdbcType = "varchar" /> </table> <!-Columnoverride ใช้แท็กนี้เพื่อป้องกันไม่ให้ mybatis สร้างไฟล์ xxxxwithblobs เมื่อประเภทฟิลด์ฐานข้อมูลเป็นข้อความ -
จากนั้นคลิกโครงการ Maven ทางด้านขวาของความคิดและคุณสามารถเห็น Mybatis-Generate: สร้างภายใต้ Mybatis-Generate และดับเบิลคลิกที่ Mybatis-Generate: สร้าง
** หมายเหตุเครื่องกำเนิดไฟฟ้าอาจกล่าวได้ว่าเป็นข้อผิดพลาด
มันคือเมื่อมันถูกสร้างขึ้นและในรุ่นที่สอง DAO และเอนทิตีจะถูกเขียนทับโดยตรงในขณะที่ mapper.xml จะถูกต่อท้ายโดยตรงส่งผลให้เกิดข้อผิดพลาดในการรันและหายาก -
4.Mybatis Custom SQL
เมื่อเราต้องการปรับแต่ง SQL เราไม่สามารถใส่สิ่งเหล่านี้ลงในไฟล์ Mapper ได้เช่นกัน มิฉะนั้นเมื่อฟิลด์ของตารางฐานข้อมูลได้รับการปรับปรุงและจำเป็นต้องสร้างใหม่ SQL ที่กำหนดเองของเราจะถูกเขียนทับหรือไม่? ดังนั้นเราจำเป็นต้องสร้างไฟล์ movieMapperext.xml ใหม่ในไดเรกทอรีของ movieMapper.xml และวาง SQL ที่กำหนดเองที่นี่ ตัวอย่างมีดังนี้:
เนื้อหาไฟล์ movieMapperext.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" namespace = "com.dmeiweb.learn.dao.moviemapper"> <select id = "selectbycondition" resultmap = "baseresultmap" parameterType = "com.dmeiweb.learn.dto.movierequest"> select yd_movies* yd_movies.id = yd_r_movie_countries.movie_id ซ้ายเข้าร่วม yd_countries cou บน yd_r_movie_countries.country_id = cou.id ซ้ายเข้าร่วม yd_r_movie_category บน yd_movies.id = yd_r_movie yd_r_movie_category.category_id = cat.id ซ้ายเข้าร่วม yd_r_movie_actor บน yd_movies.id = yd_r_movie_actor.movie_id ซ้ายเข้าร่วม yd_actors A บน yd_r_movie_actor.actor_id = a.id null "> และ yd_movies.title ชอบ"%" #{movierequest.title}"%"</ถ้า> <ถ้า test =" movierequest.country! = null "> และ cou.id = #{movierequest.country} </ถ้า> #{movierequest.category} </if> <ถ้า test = "movierequest.year! = null"> และปี = #{movierequest.year} </ถ้า> <test = "movierequest.rate! ( #{movierequest.rate} +1) </if> <ถ้า test = "movierequest.subtype! = null"> และ yd_movies.subtype = #{movierequest.subtype} </if> กลุ่มโดย yd_movies.id คำสั่งซื้อสรุป
ด้านบนเป็นรองเท้าสปริงที่แนะนำโดยตัวแก้ไข มันรวม mybatis และสร้าง mappers และเอนทิตีโดยอัตโนมัติ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!