Rumah > Java > javaTutorial > Bagaimana untuk melaksanakan operasi jadual tunggal dengan menyepadukan Mapper dalam springboot

Bagaimana untuk melaksanakan operasi jadual tunggal dengan menyepadukan Mapper dalam springboot

王林
Lepaskan: 2023-05-11 15:31:14
ke hadapan
738 orang telah melayarinya

1. Pengerahan dan pemasangan Rangka Kerja Maven

Selepas memuat turun kod sumber rangka kerja, laksanakan pemasangan bersih mvn dalam laluan akar projek untuk memasangnya ke dalam pustaka maven tempatan. Jika anda perlu berkongsi dan menggunakan pelayan peribadi Nexus, tambahkan konfigurasi distributionManagement dalam fail pom.xml laluan akar, nyatakan alamat pengedaran gudang Nexus dan gunakan mvn clean deploy untuk memasang ke gudang maven jauh, seperti

<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>
http://ip:port/repository/maven-releases/
</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>
http://ip:port/repository/maven-snapshots/
</url>
</snapshotRepository>
</distributionManagement>
Salin selepas log masuk

seperti yang dinyatakan di atas Repositori perlu mempunyai konfigurasi akaun yang sepadan dalam semua tetapan fail konfigurasi maven

Terdapat tiga cara untuk memperkenalkan rangka kerja pangkalan data ini ke dalam projek:


Perkenalkan secara langsung. cn.jboost.springboot:tkmapper-spring-boot-starter (tanpa kolam sambungan)

    Perkenalkan terus cn.jboost.springboot:druid-spring-boot-starter (sokongan kolam sambungan druid )
  1. Projek ini mewarisi cn.jboost.springboot:spring- boot-parent (menggunakan kolam sambungan druid)
  2. Konfigurasi pom.xml daripada tiga kaedah adalah seperti berikut
  3. <servers>
    <server>
    <id>nexus-snapshots</id>
    <username>admin</username>
    <password>xxx</password>
    </server>
    <server>
    <id>nexus-releases</id>
    <username>admin</username>
    <password>xxx</password>
    </server>
    </servers>
    Salin selepas log masuk

    Perkenalkan kebergantungan pemacu mysql atau postgresql mengikut situasi (yang lain Pangkalan data belum menyokong penukaran jenis dan belum diuji)

3. Konfigurasikan sumber data

Jika anda menggunakan kumpulan sambungan druid, konfigurasikannya dalam application.yml Dalam fail, tambahkan konfigurasi sumber data berikut (disyorkan)

#第一种方式
<dependency>
<groupId>cn.jboost.springboot</groupId>
<artifactId>tkmapper-spring-boot-starter</artifactId>
<version>1.2-SNAPSHOT</version>
</dependency>

#第二种方式
<dependency>
<groupId>cn.jboost.springboot</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2-SNAPSHOT</version>
</dependency>

#第三种方式
<parent>
<groupId>cn.jboost.springboot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.2-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Salin selepas log masuk
Jika anda tidak menggunakan kumpulan sambungan, konfigurasinya agak mudah, seperti berikut
spring:
datasource:
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
username: root
password:
# 自定义配置
initialSize: 2 # 初始化大小
minIdle: 1 # 最小连接
maxActive: 5 # 最大连接
druidServletSettings:
allow: 127.0.0.1
deny:
loginUsername: admin
loginPassword: Passw0rd
resetEnable: true
druidFilterSettings:
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
maxWait: 60000 # 配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis: 300000 # 配置一个连接在池中最小生存的时间,单位是毫秒
validationQuery: SELECT 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true # 打开PSCache,并且指定每个连接上PSCache的大小
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat #,wall(添加wall代码里不能直接拼接sql,druid有sql注入校验) # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
useGlobalDataSourceStat: true # 合并多个DruidDataSource的监控数据
Salin selepas log masuk

4 Tentukan domain, pemeta , perkhidmatan, objek pengawal pada setiap lapisan


Mengambil demo sebagai contoh (lihat sumber/schema.sql untuk skrip pangkalan data demo), domain mentakrifkan kelas Pengguna,

spring:
datasource:
url: jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
username: root
password:
driver-class-name: com.mysql.jdbc.Driver
Salin selepas log masuk
perlu ditambah Anotasi @Table menentukan nama jadual pangkalan data Anda boleh melaksanakan kunci utama auto-increment dengan mewarisi AutoIncrementKeyBaseDomain, atau melaksanakan kunci utama UUID oleh UUIDKeyBaseDomain Jika anda menyesuaikan jenis kunci utama yang lain, warisi BaseDomain.
Pelaksanaan kaedah umum lapisan Perkhidmatan rangka kerja BaseService hanya menyokong kunci utama satu lajur dan tidak menyokong kunci utama komposit (tidak disyorkan untuk menggunakan kunci utama komposit)

Secara lalai, rangka kerja akan memetakan atribut jenis kompleks seperti Senarai dan Peta ke Untuk jenis json mysql atau jenis jsonb postgresql, jika atribut tertentu tidak memerlukan pemetaan, anda boleh menambah anotasi @Transient untuk jenis penghitungan, anda perlu menambah @ColumnType untuk menentukan jdbcType.

lapisan dao mentakrifkan UserMapper,

@Table(name = "user")
@Getter
@Setter
@ToString
public class User extends AutoIncrementKeyBaseDomain<Integer> {
private String name;
@ColumnType(jdbcType = JdbcType.CHAR)
private Gender gender;
private List<String> favor;
private Map<String, String> address;
public enum Gender{
M,
F
}
}
Salin selepas log masuk

BaseMapper melaksanakan fungsi penambahan jadual tunggal, pemadaman, pengubahsuaian dan sisipan kelompok secara lalai Jika anda perlu mentakrifkan pertanyaan kompleks, anda boleh mentakrifkannya dalam ini antara muka dan kemudian gunakan penulisan dan pelaksanaan fail xml mapper.

Lapisan perkhidmatan mentakrifkan UserService, yang mewarisi fungsi biasa BaseService (lihat kod sumber untuk butiran Anda juga boleh menyesuaikan kaedah dalam kelas ini

@Repository
public interface UserMapper extends BaseMapper<User> {
}
Salin selepas log masuk
Lapisan pengawal mentakrifkan). UserController, yang mewarisi antara muka umum BaseController (sila lihat kod sumber untuk butiran)

@Service
public class UserService extends BaseService<Integer, User> {
@Transactional
public void createWithTransaction(User user){
create(user);
//用于测试事务
throw new RuntimeException("抛出异常,让前面的数据库操作回滚");
}
}
Salin selepas log masuk
Anda hanya perlu mentakrifkan antara muka atau kelas yang sepadan dengan setiap lapisan dan mewarisi antara muka atau kelas asas lengkapkan fungsi tambahan, pemadaman, pengubahsuaian dan pertanyaan asas pengguna Tidak perlu menulis baris kod pelaksanaan tertentu.


5 Uji dan jalankan

Contoh menyediakan ujian unit untuk dua pengguna baharu, rujuk kelas SpringbootTkmapperApplicationTests

untuk dijalankan, dalam Jalankan terus pada kelas utama, dan kemudian buka http://localhost:8080/user dalam penyemak imbas untuk menyenaraikan pengguna yang dibuat dalam ujian unit (rujuk pelaksanaan BaseController untuk antara muka lain)

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan operasi jadual tunggal dengan menyepadukan Mapper 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