บทช่วยสอนนี้ใช้งานได้จริงมากขึ้น โปรแกรมเมอร์เพิ่มรหัสคัดลอกโดยตรงไปยังโครงการของตนเองและสามารถใช้งานได้โดยเพียงแค่แก้ไขและแก้ไข อย่างไรก็ตาม Springboot และ Mybatis ไม่ได้แนะนำที่นี่ หากผู้อ่านต้องการทราบพวกเขาสามารถฝากข้อความถึงฉันและให้ความสนใจต่อไป ฉันจะอัปเดตช้าในอนาคต (ส่วนรหัสพื้นที่สีดำโทรศัพท์ Android สามารถปัดไปทางซ้ายเพื่อดูรหัสทั้งหมด) ด้วยตนเอง)
ในความเป็นจริงการรวมกันนั้นง่ายมาก หากคุณใช้ Gradle ให้เพิ่มในไฟล์ build.gradle
Compile ('org.mybatis.spring.boot: mybatis-spring-boot-starter: 1.3.1')หากคุณใช้ maven ให้เพิ่มในไฟล์ pom.xml
การกำหนดค่าห้องสมุดเดี่ยว:
หลังจากการแนะนำโดยค่าเริ่มต้น Spring Boot จะกำหนดค่าแหล่งข้อมูลสำหรับเราโดยอัตโนมัติซึ่งจะค้นหา classPath สำหรับแพ็คเกจ JAR ของ H2, HSQLDB และอื่น ๆ ในฐานข้อมูลหน่วยความจำ หากพบมันจะกำหนดค่าแหล่งข้อมูลสำหรับฐานข้อมูลหน่วยความจำโดยอัตโนมัติ
หากพารามิเตอร์การกำหนดค่าที่เกี่ยวข้องของ spring.datasource.* ระบุไว้ใน application.yml หรือ application.property , Spring Boot จะใช้การกำหนดค่านี้เพื่อสร้างแหล่งข้อมูล
จากนั้น SQLSessionFactoryBean และ SQLSessionTemplate โดยใช้แหล่งข้อมูลจะถูกสร้างขึ้นโดยอัตโนมัติ ตัวแปรของคุณจะถูกสแกนโดยอัตโนมัติเชื่อมต่อกับ SQLSessionTemplate และลงทะเบียนกับบริบทสปริง
Spring.datasource.url = jdbc: mysql: // localhost/test spring.datasource.username = dbuser spring.datasource.password = dbpass spring.datasource.driver-class-name = com.mysql.jdbc.driver
สำหรับพารามิเตอร์เพิ่มเติมโปรดดู DataSourceProperties
การกำหนดค่าหลายห้องสมุด:
เนื่องจากความต้องการทางธุรกิจโครงการจำเป็นต้องใช้ฐานข้อมูลหลายฐานสำหรับการพัฒนาธุรกิจในเวลาเดียวกัน:
ก่อนอื่นเราต้องปรับแต่งการกำหนดค่าของแหล่งข้อมูลสองแหล่งใน Application.Property หนึ่งใช้ First.datasource.* และอื่น ๆ ใช้ second.datasource.* เพื่อให้ผู้อื่นดูว่าไลบรารีเชื่อมต่อได้อย่างรวดเร็วคุณสามารถใช้การตั้งชื่อฐานข้อมูล ตัวอย่างเช่นไลบรารีผู้ใช้และคุณสามารถใช้ user.datasource.* เมื่อใช้แหล่งข้อมูลหลายแหล่งการกำหนดค่าที่จำเป็นทั้งหมดไม่สามารถละเว้นได้
first.datasource.url = jdbc: mysql: //localhost/firstfirst.datasource.username=dbuser1first.datasource.password=dbpass1fi rst.datasource.driver-class-name = com.mysql.jdbc.driverfirst.datasource.type = com.alibaba.druid.pool.druiddatasource // i กำลังใช้ Druid เช่นกันคุณไม่สามารถเพิ่มค่าเริ่มต้นได้ second.datasource.url = jdbc: mysql: //localhost/secondsecond.datasource.username=dbuser2second.datasource.password=dbpa ss2second.datasource.driver-class-name = com.mysql.jdbc.driverse.datasource.type = com.alibaba.druid.pool.druiddatasource
ฉันอัปโหลดรหัสโดยตรงวิธีการของฉันคือการสร้างแหล่งข้อมูลสองแหล่งด้วยคลาสการกำหนดค่าสองคลาส:
@การกำหนดค่า @mapperscan (basepackages = {"com.user.server.dao"}, sqlsessionTemplateref = "UsersQlSessionTemplate") ชั้นเรียนสาธารณะ USERMYBATISCONFIG {@Bean (name = "userDataSource" คลาสถัดไปไม่จำเป็นต้องเพิ่ม @ConfigurationProperties (คำนำหน้า = "First.datasource") // ค่าคำนำหน้าจะต้องเป็นคำนำหน้าของคุณสมบัติที่เกี่ยวข้องใน Application.properteis Public DataSource UserDataSource () {ส่งคืนข้อมูล } @Bean สาธารณะ SQLSessionFactory UsersqlSessionFactory (@qualifier ("UserDataSource") DataSource DataSource) โยนข้อยกเว้น {SQLSessionFactoryBean Bean = ใหม่ SQLSessionFactoryBean (); Bean.setDatasource (แหล่งข้อมูล); // เพิ่ม XML Directory ResourcePatterNresolver Resolver = ใหม่ PathMatchingResourcePatterNresolver (); ลอง {bean.setMapperLocations (resolver.getResources ("classpath*: com/ผู้ใช้/เซิร์ฟเวอร์/dao/mapping/*. xml")); กลับ bean.getObject (); } catch (exception e) {e.printstacktrace (); โยน RuntimeException ใหม่ (E); }} @Bean สาธารณะ SQLSessionTemplate ผู้ใช้ QLSessionTemplate (@qualifier ("UsersQlSessionFactory") SQLSessionFactory SQLSessionFactory) โยนข้อยกเว้น {SQLSessionTemplate เทมเพลต = SQLSessionTemplate ใหม่ (SQLSessionFactory); // ใช้โรงงานที่กำหนดค่าไว้ด้านบนเพื่อส่งคืนเทมเพลต }} @configuration @mapperscan (basepackages = {"com.airmi.server.dao"}, sqlsessionTemplateref = "AutoTestSqlSessionTemplate") Public Class AutotestMyBatisconfig {@bean autotestDataSource () {ส่งคืน dataSourceBuilder.create (). build (); } @Bean สาธารณะ SQLSessionTemplate AutoTestSqlSessionTemplate (@qualifier ("AutoTestSqlSessionFactory") SQLSessionFactory SQLSessionFactory) โยนข้อยกเว้น เทมเพลตกลับ; } @Bean สาธารณะ SQLSessionFactory AutoTestSqlSessionFactory (@qualifier ("AutoTestDataSource") DataSource DataSource) โยนข้อยกเว้น {SQLSessionFactoryBean ถั่ว = SQLSessionFactoryBean (); Bean.setDatasource (แหล่งข้อมูล); // เพิ่ม XML Directory ResourcePatterNresolver Resolver = ใหม่ PathMatchingResourcePatterNresolver (); ลอง {bean.setMapperLocations (Resolver.getResources ("classpath*: com/airmi/server/dao/mapping/*. xml")); กลับ bean.getObject (); } catch (exception e) {e.printstacktrace (); โยน RuntimeException ใหม่ (E); -@Primary // คำอธิบายประกอบนี้หมายความว่าเมื่อมีคลาสการใช้งานหลายคลาสที่จะฉีดในอินเทอร์เฟซเดียวกันไม่จำเป็นต้องอนุญาตให้คำอธิบายประกอบ AutoWire รายงานข้อผิดพลาด เว็บไซต์อย่างเป็นทางการกำหนดให้เมื่อแหล่งข้อมูลหลายแหล่งต้องระบุแหล่งข้อมูลหนึ่งตัวและไม่จำเป็นต้องเพิ่มแหล่งข้อมูลอื่น
@qualifier ฉีดตามชื่อมักจะถูกฉีดในหนึ่งอินสแตนซ์ที่มีหลายประเภท (ตัวอย่างเช่นมีหลายอินสแตนซ์ของประเภทแหล่งข้อมูล)
@mapperscan (basepackages = {"com.user.server.dao"}, sqlsessionTemplateref = "usersQlSessionTemplate") BasePackages เป็นแพ็คเกจที่ Mapper ตั้งอยู่โครงสร้างรหัสผู้ใช้มีดังนี้:
สรุป
ข้างต้นเป็นวิธีการใช้งานของสปริงบูตที่รวม MyBatis โดยใช้แหล่งข้อมูลหลายแหล่งแนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!