Rumah > Java > javaTutorial > teks badan

Bagaimana untuk mengkonfigurasi mybatis dan pengurusan transaksi dalam springboot

WBOY
Lepaskan: 2023-05-10 19:13:22
ke hadapan
1228 orang telah melayarinya

1. Konfigurasi but spring dan mybatis

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>
Salin selepas log masuk

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.*
Salin selepas log masuk

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:

Bagaimana untuk mengkonfigurasi mybatis dan pengurusan transaksi dalam springboot

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

@Autowired
@Lazy //这样就会延迟加载,上图不需要,这里只是解释这注解
LogsUserActiveMapper logsUserActiveMapper;
Salin selepas log masuk

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:

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);
    }
}
Salin selepas log masuk

Berikut ialah nilai ruang nama. dalam mapper.xml saya

<mapper namespace="cloud.kafka.mapper.LogsUserActiveMapper" >
Salin selepas log masuk

**Ini melengkapkan konfigurasi mybatis.

2. Konfigurasi transaksi

adalah untuk menambah dua anotasi berdasarkan mybatis

1 dan @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>
Salin selepas log masuk

Jadi selagi kebergantungan di atas diperkenalkan, urus niaga tidak perlu memperkenalkan pakej lagi,

Pertama, cari pelaksanaan perkhidmatan anda kelas dan tambah

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

Sebagai contoh, kaedah memasukkan data berikut menambahkan transaksi:

@Override
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT,timeout=36000,rollbackFor=Exception.class)
public Integer add(Cbf_jtcy t) {
    return cbf_jtcyMapper.insert(t);
}
Salin selepas log masuk

Jika anda tidak tahu apa yang ada di dalamnya, anda boleh menyemak artikel ini, spring, konfigurasi pengurusan transaksi mybatis dan penggunaan @Transactional anotation

3 Selepas konfigurasi, kelas permulaan but spring mesti mendayakan transaksi, dan anotasi yang digunakan untuk mendayakan transaksi ialah

, 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);
    }
}
Salin selepas log masuk
Ini melengkapkan konfigurasi transaksi.

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan