SpringBoot integriert Oracle-Kampf und -Gruben

Vorwort:

Vor einiger Zeit habe ich an einem Oracle-Projekt gearbeitet, das viel Zeit in Anspruch genommen hat. Da das Projekt jetzt als Ganzes online ist, werde ich den tatsächlichen Kampfprozess und die hier aufgetretenen Fallstricke aufzeichnen. Internetnutzer, die es benötigen, können es auch direkt verwenden .

1. Leitfadenpaket

Springboot-Version: 2.1.3. Es ist am besten, mehr als 10 zu haben, und im Internet gibt es einige Probleme mit weniger als 10. Ich habe es nicht selbst getestet.

<!--oracle驱动-->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>

2. Konfigurationsdatei: Datenbankinformationen

# oracle datasource 数据库访问配置  默认 
spring.datasource.platform.url = jdbc:oracle:thin:@127.0.0.1:1521/orcl
spring.datasource.platform.username = LOCAL
spring.datasource.platform.password = LOCAL
spring.datasource.platform.driver-class-name = oracle.jdbc.OracleDriver

Hinweis : Hier ist orcl der Dienstname, nicht sid. Wenn es sid ist, ist es 1521: sid. Die Bedeutung der beiden Symbole ist unterschiedlich. Im Allgemeinen wird der Dienstname durch den Betrieb und die Wartung angegeben. Wenn Sie keine Verbindung herstellen und dann bestätigen können, dass das Passwort korrekt ist, können Sie es mit Ihren Kollegen bestätigen. Es ist eine kleine Grube

Außerdem gibt es hier mehr Plattformnamen in der Konfiguration. Dies liegt daran, dass ich die Unterdatenbank und Untertabelle sowie die selbstkonfigurierte Datenbankkonfiguration verwende. Wenn dies nicht der Fall ist, muss die automatische Erfassung entfernt werden, da Spring andernfalls keine Verbindung herstellen kann, wenn es sie nicht erhalten kann.

Hier darf der Benutzername keine Administratorebene haben , andernfalls wird ein Fehler beim Herstellen der Verbindung zur Datenbank gemeldet.

Gerüchte:

Einige Blogger reden Unsinn, ohne selbst zu experimentieren, und der obige Fehler besagt: Fügen Sie als sysdba nach dem Benutzernamen hinzu, das kann gelöst werden. Ich habe es selbst versucht und keinen Fehler beim Herstellen der Verbindung zur Datenbank gemeldet, aber bei der Abfrage der Datenbank wurde gemeldet, dass die Tabelle oder Ansicht nicht gefunden werden konnte. Es wird empfohlen, dass Sie selbst einen Benutzer erstellen, der sich auf die eigenen Regeln von Oracle bezieht.

3. Code

Der Controller, der Service, der Mapper, das Modell usw., die wir normalerweise verwenden, können durch Tools (Idee) generiert werden. Sie können sich auf diesen Artikel von mir beziehen, der eine vorbereitete Oracle-Vorlage und detaillierte Tutorials enthält: juejin.cn/post/722333…

Ich werde den spezifischen Code nicht veröffentlichen und es gibt spezifische Renderings auf der Website. Passende Nummernvorlage, der gesamte Vorgang kann automatisch mit einem Schlüssel durchgeführt werden. Wenn Sie eine Idee jedoch nicht verwenden, müssen Sie sie möglicherweise manuell schreiben. Hier werde ich über einige Punkte sprechen, auf die Sie beim Schreiben von Hand achten sollten, hauptsächlich XML:

1. Wenn Oracle eine Tabelle erstellt, gibt es keine selbstinkrementierende ID, die konfiguriert werden muss. Ich verwende varchar2 ohne Selbstinkrementierungskonfiguration, und Internetnutzer müssen selbst danach suchen.

2.虽然我不是自增,但是模板是按照自增的设计的(涉及到初始模板)。所以如果你和我一样的话,新增需要手动加下,然后修改有需要的话也改一下。不推荐改动模板;

3.oracle中是没有limit分页的,所以需要注意修改,我的模板中没有因为这次需求只有一个分页,需求量大的可以自己加上,研究一下很简单;

其次我们有的会集成MyBatis分页,如果传入page参数就会触发,然后sql报错

4.手动写代码时,字段名需要用“”包含,否则会报sql执行错误

问题更新:

1.一直报这个驱动类找不到,但是这个驱动类jar包已经添加到项目了,并且我也反编译jar包,确认路径是对的。后来将target文件夹删掉重新编译,就没有问题了;

2.在上面中说到字段名需要加“”,是因为有的字段是特殊字段,比如DATE等,所以在模板中就直接都加上了;

3.其实使用管理员登录也是可以,但是查询时需要加上库名.表名(自身感觉多此一举,不推荐);

今天就到这里吧,感觉有用的小伙伴可以点个赞;有其它意见和问题的也可以在下面评论,看到后会及时回复。你的支持就是我更新的最大动力!

Acho que você gosta

Origin juejin.im/post/7233698667847335995
Recomendado
Clasificación