1 Pertama sekali, semua kebergantungan yang diperlukan untuk but spring untuk mengkonfigurasi mybatis adalah seperti berikut:
<!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <!--以上内容放在dependencies标签外,如果你有已经有父标签,那将以上部分粘贴到父项目中--> <!-- spring boot 项目启动必须引入的web依赖,以下内容放在dependency即可 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.1.RELEASE</version> </dependency> <!-- Spring Boot Mybatis 依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> <!-- oracle的数据库驱动包 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.4.0-atlassian-hosted</version> </dependency>
Di sini kita bercakap tentang pakej pemacu pangkalan data di atas, oracle dan Mysql memperkenalkan kebergantungan yang berbeza, jangan lupakannya. Jika anda terlupa untuk memperkenalkannya, kelas pemandu yang tidak dijumpai pengecualian akan dilaporkan.
2. Kemudian, tambahkan kandungan berikut dalam application.properties
fail konfigurasi:
##数据库连接信息 spring.datasource.url=jdbc:oracle:thin:@//192.168.1.171:1521/orcl spring.datasource.username=znxd spring.datasource.password=znxd spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver ##指向mapper的xml文件位置 mybatis.mapper-locations=classpath:mapper/*Mapper.xml ##指向实体类的位置 mybatis.type-aliases-package=cloud.user.models.*
Sebenarnya terdapat banyak kandungan bermula dengan spring.datasource
secara khusus, selepas memasukkannya ke dalam application.properties
fail Lihat sahaja apa yang anda boleh klik.
Secara lalai, springboot akan mengumpulkan maklumat bermula dengan spring.datasource, mengkonfigurasi objek DataSource dan kemudian mengkonfigurasi sqlSessionFactory dan konfigurasi sambungan pangkalan data lain yang berkaitan, jadi ramai orang lain akan bercakap tentang konfigurasi apa kelas untuk menulis, yang saya rasa tidak perlu. (Mengkonfigurasi druid memerlukan @Bean)
Sudah tentu, jika ia sangat terperinci dan konfigurasi yang berkaitan tidak boleh diklik melalui spring.datasource
dalam fail application.properties, anda mungkin perlu mengkonfigurasi kelaskan sesuatu.
mybatis.mapper-locations
Lokasi yang ditunjuk bermula dari src/main/resource, dan classpath perlu ditambah di hadapan ia menunjuk ke lokasi di mana fail mapper.xml anda diletakkan.
3. Mybatis menjana kelas entiti, pemeta, dsb. melalui kejuruteraan terbalik jadual pangkalan data Pertama, saya menyiarkan struktur penempatan khusus seperti berikut:
Penjelasan untuk gambar di atas adalah seperti berikut:
Kelas permulaan mesti diletakkan pada kedudukan tertinggi berbanding kelas lain dalam projek seperti yang dinyatakan dalam artikel sebelum ini. but spring tidak mempunyai konfigurasi projek musim bunga tradisional Dalam gambar di atas, perkhidmatan diletakkan lebih tinggi daripada kelas pelaksanaannya Jika terdapat dua perkhidmatan A dan B, dan terdapat Ampl dan Bimpl dalam kelas pelaksanaan, jika Ampl memanggil B, ia mungkin berada dalam. Apabila memulakan bekas, "medan bernama ‘B’ not found" muncul. Ralat ini muncul, menunjukkan bahawa urutan pengimbasan bekas adalah salah. Penyelesaian terbaik untuk situasi ini ialah meletakkan perkhidmatan di tempat yang tinggi seperti yang saya lakukan Apabila bekas bermula, ia mengimbas perkhidmatan terlebih dahulu, dan kemudian mengimbas impl, supaya ia pasti dapat ditemui apabila. melaksanakan perkhidmatan pengimbasan kelas, ralat ini tidak akan berlaku. Penyelesaian lain ialah menambah anotasi tambahan semasa memperkenalkan perkhidmatan: @Lazy Ringkasnya, jika terdapat hubungan antara memanggil dan dipanggil, anda mesti ingat bahawa penerima mesti diimbas terlebih dahulu ke dalam but spring bekas terbina dalam , iaitu, kedudukan pakej penerima hendaklah diletakkan lebih tinggi (jawatan mestilah sekurang-kurangnya sama). 4. Anotasi @Service perlu ditambahkan pada kelas pelaksanaan perkhidmatan. Ini mungkin tidak perlu, saya belum mencubanya. 5 Selain keperluan ini, spring boot+mybatis juga perlu menambah anotasi @MapperScan ke kelas permulaan, seperti berikut: Berikut ialah nilai ruang nama. dalam mapper.xml saya **Ini melengkapkan konfigurasi mybatis. adalah untuk menambah dua anotasi berdasarkan mybatis 1 dan @Autowired
@Lazy //这样就会延迟加载,上图不需要,这里只是解释这注解
LogsUserActiveMapper logsUserActiveMapper;
package cloud.kafka;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication
@EnableTransactionManagement //如果mybatis中service实现类中加入事务注解,需要此处添加该注解
@MapperScan("cloud.kafka.mapper") //扫描的是mapper.xml中namespace指向值的包位置
public class KafkaLogApplication {
public static void main(String[] args){
SpringApplication.run(KafkaLogApplication.class, args);
}
}
<mapper namespace="cloud.kafka.mapper.LogsUserActiveMapper" >
2. Konfigurasi transaksi
@EnableTransactionManagement
Dua, ia datang daripada pakej berikut: @Transactional
spring-tx.jar
Pakej ini sebenarnya telah diperkenalkan secara automatik apabila mybatis dikonfigurasikan untuk memperkenalkan kebergantungan . , iaitu yang di bawah: <!-- Spring Boot Mybatis 依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
Anotasi, jika anda menambahkannya pada kelas, maka semua kaedah kelas akan diuruskan oleh transaksi Jika anda menambahkannya pada kaedah, maka hanya kaedah ini mematuhi transaksi tertentu. Sudah tentu, kami biasanya menambahkannya pada kaedah. Kerana hanya menambah, memadam dan mengubah suai akan memerlukan transaksi. @Transactional
@Override @Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT,timeout=36000,rollbackFor=Exception.class) public Integer add(Cbf_jtcy t) { return cbf_jtcyMapper.insert(t); }
, seperti berikut: @EnableTransactionManagement
@SpringBootApplication @EnableTransactionManagement @MapperScan("microservice.qssj.mapper")//必须加这个,不加报错,如果不加,也可以在每个mapper上添加@Mapper注释,并且这里还要多填一个注释,那个我忘了,我一直用这个注解 public class QssjServiceApplication { public static void main(String[] args) { SpringApplication.run(QssjServiceApplication.class, args); } }
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi mybatis dan pengurusan transaksi dalam springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!