ตัวอย่างนี้แบ่งปันวิธีการรวม Springboot เข้ากับ MyBatis โดยใช้พูลเชื่อมต่อฐานข้อมูล DRUID เนื้อหาเฉพาะมีดังนี้
ในโครงการ Springboot เพิ่มการพึ่งพาต่อไปนี้
<!-สปริง mybatis-> <การพึ่งพา> <roupId> org.mybatis.spring.boot </groupid> <ratifactid> mybatis-spring-boot-starter </artifactid> <persion> 1.1.1 </เวอร์ชัน> </การพึ่งพา> <! <ArtIfactId> mysql-connector-java </artifactid> <scope> รันไทม์ </cope> </การพึ่งพา> <!-พูลการเชื่อมต่อฐานข้อมูล DRUID-> <การพึ่งพา> <GroupId> com.alibaba </groupid>
ในไดเรกทอรีทรัพยากรให้สร้างไฟล์การกำหนดค่า JDBC.Properties และเพิ่มการกำหนดค่าต่อไปนี้
#Database การกำหนดค่า spring.datasource.url = jdbc: mysql: //127.0.0.1: 3306/การทดสอบ? useunicode = true & characterencoding = utf8 & usessl = falsspring.d atasource.username = adminspring.datasource.password = adminspring.datasource.driver-class-name = com.mysql.jdbc.driver# การกำหนดค่าพูลการเชื่อมต่อ # เริ่มต้นขนาดต่ำสุด, สปริงสูงสุด Datasource.initialSize = 5 Spring.datasource.minidle = 5 Spring.datasource.maxactive = 20 # กำหนดเวลาเพื่อให้การเชื่อมต่อหมดเวลา Spring.datasource.timeBetweenevictionRunsmillis = 60000# กำหนดเวลาขั้นต่ำเพื่อความอยู่รอดในสระว่ายน้ำในสปริงมิลลิวินาที datasource.minevictableidletimeMillis = 300000# ทดสอบว่าการเชื่อมต่อนั้นมีประสิทธิภาพ การสมัครสำหรับการเชื่อมต่อหากเวลาว่างมากกว่า timebetweenevictionrunsmillis ให้ดำเนินการตรวจสอบความถูกต้องเพื่อตรวจสอบว่าการเชื่อมต่อนั้นเป็นสปริงที่ถูกต้อง datasource.testhimeidle = TRUE# เมื่อใช้การเชื่อมต่อหรือไม่ Spring.datasource.testonReturn = false# เพื่อเปิดใช้งาน pscache จะต้องกำหนดค่าให้มากกว่า 0 เมื่อมากกว่า 0, poolpreparedstatements จะถูกกระตุ้นโดยอัตโนมัติว่า truespring.datasource.maxpoolpreparedstatementperconnectiones = 20# ปลั๊กอินส่วนขยายได้รับการกำหนดค่าโดยนามแฝง ปลั๊กอินสามัญคือ:# สำหรับการตรวจสอบสถิติ: สถิติ# สำหรับการบันทึกตัวกรอง: log4j# สำหรับการป้องกันการฉีด SQL: Wallspring.datasource.filters = Stat, log4j, Wall
สร้าง Data Source Configuration class dataSourceConfig.java รหัสมีดังนี้
แพ็คเกจ com.liao.mybatis; นำเข้า com.alibaba.druid.pool.druiddatasource; นำเข้า org.mybatis.spring.annotation.mapperscan; นำเข้า org.slf4j.logger; org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.beans.factory.annotation.value; นำเข้า org.springframework.context.annotation.bean; org.springframework.context.annotation.propertysource; นำเข้า org.springframework.stereotype.component; นำเข้า Javax.sql.datasource; นำเข้า java.sql.sqlexception; 18-1-2 20:56 PM*/@การกำหนดค่า@mapperscan ("com.liao. **. dao") คลาสสาธารณะ DataSourceConfig {logger logger สุดท้ายคงสุดท้าย = loggerFactory.getLogger (dataSourceConfig.class); @autowired ส่วนตัว JDBCCONFIG JDBCCONFIG; @Bean @Primary // ใน DataSource เดียวกันก่อนอื่นให้ใช้ DataSource DataSource DataSource () {druidDataSource druidDataSource = ใหม่ druidDataSource (); druiddatasource.seturl (jdbcconfig.geturl ()); druiddatasource.setusername (jdbcconfig.getusername ()); druiddatasource.setPassword (jdbcconfig.getPassword ()); druiddatasource.setInitialSize (jdbcconfig.getInitialSize ()); druiddatasource.setminidle (jdbcconfig.getminidle ()); druiddatasource.setmaxactive (jdbcconfig.getMaxactive ()); druiddatasource.settimebetweenevictionrunsmillis (jdbcconfig.gettimebetweenevictionrunsmillis ()); druiddatasource.setminevictableidletimeMillis (jdbcconfig.getMinevictableidletItimeLis ()); druiddatasource.setValidationQuery (jdbcconfig.getValidationQuery ()); druiddatasource.settesthavyidle (jdbcconfig.istesteSthialidle ()); druiddatasource.settestonborrow (jdbcconfig.istestonborrow ()); druiddatasource.settestonreturn (jdbcconfig.istestonreturn ()); DruidDataSource.SetMaxPoolPreparedStatementPerConnesionesize (JDBCCONFIG.GETMAXPOOLPREAPEDSTATEMENTPERCONNESTIONIZE ()); ลอง {druiddatasource.setFilters (jdbcconfig.getFilters ()); } catch (sqlexception e) {if (logger.isinfoenabled ()) {logger.info (e.getMessage (), e); }} ส่งคืน druiddatasource; } /** * คลาสการกำหนดค่า JDBC * * @author Hongyangliao * @className: jdbcconfig * @date 18-1-2 9:00 PM * /@propertysource (value = "classpath: jdbc.properties") @Value ("$ {Spring.datasource.username}") ชื่อผู้ใช้สตริงส่วนตัว; / *** ชื่อไดรเวอร์*/ @Value ("$ {Spring.datasource.Driver-Class-Name}") Private String DriverClass; / ** * URL การเชื่อมต่อฐานข้อมูล */ @Value ("$ {Spring.datasource.url}") URL สตริงส่วนตัว; / *** การเริ่มต้นการเชื่อมต่อฐานข้อมูลขนาดการเริ่มต้นขนาด*/ @value ("$ {spring.datasource.initialsize}") private int fiarsize; / *** จำนวนการเชื่อมต่อขั้นต่ำในพูลเชื่อมต่อฐานข้อมูล*/ @Value ("$ {spring.datasource.minidle}") private int minidle ส่วนตัว; / *** จำนวนการเชื่อมต่อสูงสุดในพูลเชื่อมต่อฐานข้อมูล*/ @Value ("$ {spring.datasource.maxactive}") private int maxactive ส่วนตัว; / *** รับเวลาเมื่อการเชื่อมต่อรอการหมดเวลา*/ @Value ("$ {spring.datasource.maxwait}") MaxWait ยาวส่วนตัว; / *** ตรวจพบ*/ @Value บ่อยแค่ไหน ("$ {Spring.datasource.timeBetweeneVictionRunsmillis}") เวลาส่วนตัวยาวส่วนตัว / *** เวลาขั้นต่ำสำหรับการเชื่อมต่อเพื่อความอยู่รอดในพูล*/ @Value ("$ {spring.datasource.minevictableidletEtimeLis}") ส่วนตัวยาว minevictableidletimeMillis ส่วนตัว; / ** * SQL เพื่อทดสอบว่าการเชื่อมต่อนั้นถูกต้อง */ @Value ("$ {Spring.Datasource.ValidationQuery}") สตริงการตรวจสอบความถูกต้องของสตริงส่วนตัว; / ** * เมื่อสมัครการเชื่อมต่อหากเวลาว่างมากกว่า timebetweenevictionrunsmillis ตรวจสอบว่าการเชื่อมต่อนั้นถูกต้อง */ @Value ("$ {spring.datasource.testhialidle}") บูลีนส่วนตัว / ** * เมื่อสมัครการเชื่อมต่อตรวจสอบว่าการเชื่อมต่อนั้นถูกต้อง */ @Value ("$ {Spring.datasource.testonborrow}") Boolean Private Boolean TestonBorrow; / ** * เมื่อส่งคืนการเชื่อมต่อตรวจสอบว่าการเชื่อมต่อนั้นถูกต้อง */ @Value ("$ {Spring.datasource.testonReturn}") Boolean Private Boolean TestonReturn; / *** pscache size*/ @Value ("$ {spring.datasource.maxpoolpreparedStatementPerConnesionesize}") int maxpoolpreparedStatementPerconnesionesize ส่วนตัว / ***กำหนดค่าปลั๊กอินส่วนขยายโดยนามแฝง*/ @Value ("$ {spring.datasource.filters}") ตัวกรองสตริงส่วนตัว; สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getDriverClass () {return driverclass; } โมฆะสาธารณะ setDriverClass (String driverclass) {this.driverclass = driverclass; } สตริงสาธารณะ getUrl () {return url; } โมฆะสาธารณะ setUrl (rl String) {this.url = url; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } public int getInitialSize () {return reiniSize; } โมฆะสาธารณะ setInitialSize (int fiarsize) {this.initialSize = ค่าเริ่มต้น; } สาธารณะ int getMinidle () {return minidle; } โมฆะสาธารณะ setMinidle (int minidle) {this.minidle = minidle; } public int getMaxactive () {return maxactive; } โมฆะสาธารณะ setMaxactive (int maxactive) {this.maxactive = maxactive; } สาธารณะยาว getMaxWait () {return maxWait; } โมฆะสาธารณะ setMaxWait (ยาว maxWait) {this.maxWait = maxWait; } สาธารณะ GetTimeBetweeneVictionRunsmillis () {ส่งคืน timebetweenevictionrunsmillis; } โมฆะสาธารณะ settimebetweenevictionrunsmillis (Long timebetweenevictionrunsmillis) {this.timebetweenevictionrunsmillis = timebetweenevictionrunsmillis; } สาธารณะยาว getMinevictableidletItimeLis () {return minevictableidletItimeLis; } โมฆะสาธารณะ setMinevictableidletItimeMillis (ยาว minevictableidletimeMillis) {this.minevictableidletEtimeLis = minevictableidletEtimeMillis; } สตริงสาธารณะ getValidationQuery () {return validationQuery; } โมฆะสาธารณะ setValidationQuery (String ValidationQuery) {this.validationQuery = ValidationQuery; } บูลีนสาธารณะ istesthimeidle () {return testharialidle; } โมฆะสาธารณะตั้งถิ่นฐานในขณะเดียวกัน (บูลีนทดสอบในขณะเดียวกัน) {this.testhialidle = testharhialidle; } บูลีนสาธารณะ istestonborrow () {return testonborrow; } โมฆะสาธารณะ Settestonborrow (Boolean Testonborrow) {this.testonborrow = testonborrow; } บูลีนสาธารณะ istestonReturn () {return testonReturn; } โมฆะสาธารณะ SettestonReturn (บูลีน testonreturn) {this.testonReturn = testonReturn; } สาธารณะ int getMaxPoolPreparedStatementPerConnesionesize () {return maxPoolPreparedStatementPerConnesionesize; } โมฆะสาธารณะ setMaxPoolPreparedStatementPerConnesionesize (int maxpoolpreparedStatementPerConnesionesize) {this.maxPoolpreparedStatementPerConnectionize = MaxPoolPreparedStatementPerConnesionesize; } สตริงสาธารณะ getFilters () {ตัวกรองส่งคืน; } โมฆะสาธารณะ setFilters (ตัวกรองสตริง) {this.filters = ตัวกรอง; -สร้างคลาสเซสชันการกำหนดค่าโรงงาน SessionFactoryConfig.java รหัสมีดังนี้
แพ็คเกจ com.liao.mybatis; นำเข้า java.io.ioexception; นำเข้า Javax.sql.datasource; นำเข้า org.mybatis.spring.sqlsessionfactorybean; นำเข้า org.springframework.beans.factory.annotation.autowired; org.springframework.context.annotation.configuration; นำเข้า org.springframework.core.io.classpathresource; นำเข้า org.springframework.transaction.annotation.enabletransactionManagement; <TX: คำอธิบายประกอบที่ขับเคลื่อนด้วย /> คลาสสาธารณะ SessionFactoryConfig { /** * เส้นทางการกำหนดค่า mybatis * /สตริงคงที่ส่วนตัว mybatis_config = "mybatis-config.xml"; @autowired DataSource DataSource; /**** สร้าง SQLSessionFactoryBean* และตั้งค่าการกำหนดค่าเช่นการตั้งชื่ออูฐ ฯลฯ * ตั้งค่าพา ธ การแม็พ Mapper * ตั้งแหล่งข้อมูลข้อมูลแหล่งข้อมูล * * @title: createsqlSessionFactoryBean * @author: Hongyangliao * @date: 18-1-3 9:52 AM * @Param * @return org.mybatis.spring.sqlsession "SQLSessionFactory") สาธารณะ SQLSessionFactoryBean CreateSqlSessionFactoryBean () พ่น IOException {SQLSessionFactoryBean SQLSessionFactory = ใหม่ SQLSessionFactoryBean (); // ตั้งค่า MyBatis Configuration Scan Path SQLSessionFactory.SetConfigLocation (ใหม่ classPathResource (mybatis_config)); // ตั้งค่า DataSource SQLSessionFactory.SetDataSource (DataSource); ส่งคืน sqlsessionfactory; -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น