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>
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)
<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>
Perkenalkan kebergantungan pemacu mysql atau postgresql mengikut situasi (yang lain Pangkalan data belum menyokong penukaran jenis dan belum diuji)
#第一种方式 <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>
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的监控数据
4 Tentukan domain, pemeta , perkhidmatan, objek pengawal pada setiap lapisan
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
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 } }
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> { }
@Service public class UserService extends BaseService<Integer, User> { @Transactional public void createWithTransaction(User user){ create(user); //用于测试事务 throw new RuntimeException("抛出异常,让前面的数据库操作回滚"); } }
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!