欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot集成mybatis連接oracle的圖文教程

 更新時間:2022年02月26日 08:59:37   作者:無暇淺安時光  
這篇文章主要介紹了Spring Boot集成mybatis連接oracle的圖文教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一、背景

在實際開發(fā)過程中是離不開數(shù)據(jù)庫的,如果不使用任何框架,那么連接數(shù)據(jù)庫的代碼會散落在項目的各個地方,且容易出現(xiàn)各種連接數(shù)據(jù)庫問題。

原始的連接數(shù)據(jù)庫的步驟

  • 1.加載驅(qū)動(什么數(shù)據(jù)庫,就記載什么驅(qū)動)
  • 2.獲取連接
  • 3.編寫sql
  • 4.創(chuàng)建statement
  • 5.執(zhí)行sql語句并處理結(jié)果
  • 6.自下而上一次關(guān)閉連接(容易出現(xiàn)異常)

在實際開發(fā)中,操作數(shù)據(jù)庫還是很頻繁的,如果按照這個步驟連接數(shù)據(jù)庫,會很影響性能,用戶體驗也不好。而Mybatis內(nèi)部封裝了jdbc,開發(fā)人員只需要考慮sql語句的編寫和處理返回結(jié)果,其余都封裝好了,這樣極

大程度減少了開發(fā)工作量。

二、整合過程

稀里糊涂的就整合好了,自己卻是一臉蒙

springboot 集成mybatis連接oracle數(shù)據(jù)庫的過程

1.tools:Spring Boot, IDEA,Oracle,MyBatis,Maven…

2.在上一篇項目搭建成功的基礎上:

2.1 在POM.xml 文件添加依賴:

<!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- 與數(shù)據(jù)庫操作相關(guān)依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- oracle -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.1.0</version>
        </dependency>

注意:在下面這個地方能看到,說明依賴添加成功了:

如果沒有:就需要手動添加依賴:

先下載驅(qū)動(ojdbc6.jar),cd到下載的ojdbc6.jar所在路徑,執(zhí)行命令

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc6.jar

出現(xiàn)BUILD SUCCES,說明成功了。但是文件位置可能不對,需要移到maven的Reponsitory中。將生成的oracle文件拷貝到相應的目錄下。

查看reponsitory的位置:

放的路徑如下:

3. 依賴添加成功后,就需要配置mvc層

3.1 controller層:

 //第一行可以寫 @Restcontroller(返回json的controller)
//@Restcontroller = @Controller + @ResponseBody
@Controller
public class PersonController {
    @Resource
    private PersonIService personIService;
    @RequestMapping("/person")
    @ResponseBody//json返回
    public List<Person> findAll(){
       List<Person> list = personIService.findAll();
        return list;//[{},{}]
    }
    @RequestMapping("/findPersonByid/{id}")
    @ResponseBody//返回json類型
    public Person findByid(@PathVariable("id") Integer id){
        return personIService.findByid(id);//{}
    }
}

3.2 service 層:

	@Service
public class PersonServiceImpl implements  PersonIService{
    @Autowired
    private IPersonDao dao;
    public List<Person> findAll(){
        return dao.findAll();
    }
     public Person findByid(Integer id){
        return dao.findByid(id);
    }

這里有個細節(jié)問題:這個dao可能會報錯,但是不影響,如果看不習慣就在這里設置下:

3.3 dao層:注意:只有接口,沒有實現(xiàn)類

//不使用@Mapper注解,通過使用.xml文件,在對應的.xml寫sql語句,查出數(shù)據(jù)并返回
public interface IPersonDao {
    public List<Person> findAll();
    public Person findByid(@Param("id") Integer id);
}
另外一種方法(拿其他栗子舉例):
//使用了@Mapper注解 ,就不需要再寫.xml文件
@Mapper
public interface IEmployeeDao {
    @Select("select * from tbl_emp e where e.name=#{name}")
    public List<Employee> findEmpByName(@Param("name") String name);
}

3.4 entity 層:

	/**
 * 持久化類
 * by wx 2019-04-08
 */
public class Person implements Serializable {
    private static final long serialVersionUID = -6172780607087661025L;
    private Integer id;
    private String name;
    private String addr;
    private String company;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddr() {
        return addr;
    }
    public void setAddr(String addr) {
        this.addr = addr;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
}

3.5 在application.yml文件配置連接數(shù)據(jù)庫:

在這里遇到了2個問題:

1.一直報這個驅(qū)動類找不到,但是這個驅(qū)動類jar包已經(jīng)添加到項目了,并且我也反編譯jar包,確認路徑是對的。后來將target文件夾刪掉重新編譯,就沒有問題了。

2.我用sys/root作為用戶名/密碼連接,報,拒接連接,讓我創(chuàng)建sys連接并授權(quán)之類的,然后我就用/as sysdba登陸 創(chuàng)建了一個用戶,如圖所示(因為之前已經(jīng)建立了c##root用戶,這里就拿c##wx做例子):

由于tbl_person表是建立在sysdba用戶下的,在c##root用戶下不能查詢,在次用戶下想訪問就需要將這個表單獨授權(quán)給c##root用戶,同時還需要建同義詞,這樣就可以省略前綴sys.,直接通過表名就可以操作。

如圖所示:

3.6 入口函數(shù)配置掃描mapper,即:@MapperScan(“com.wx.springbootdemo.dao”)

@RestController
@SpringBootApplication
@MapperScan("com.wx.springbootdemo.dao")//要掃描的dao包
public class SpringbootdemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootdemoApplication.class, args);
    }
}

3.7 mapper映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        <mapper namespace="com.wx.springbootdemo.dao.IPersonDao">
            <select id="findAll" resultType="com.wx.springbootdemo.entity.Person">
        select id,name,addr ,company from tbl_person
    </select>
    <select id="findByid" resultType="com.wx.springbootdemo.entity.Person">
            select * from tbl_person where id = #{id}
        </select>
        </mapper>

3.8 項目結(jié)構(gòu):

測試:先啟動項目,然后如下訪問:

另一種測試方法(Spring Boot 內(nèi)嵌的tools),如下圖:

個人感悟

  • Mybatis:雖然做到了代碼和sql語句分離,但是無法做到數(shù)據(jù)庫無關(guān)性,即換了一個數(shù)據(jù)庫例如mysql,很多語句就得做修改。
  • Hibernate:是ORM框架,做到了數(shù)據(jù)庫無關(guān)性,很好的封裝了底層jdbc。支持獨特的Hql查詢,也支持原生的sql語句。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java String中的split方法使用總結(jié)

    Java String中的split方法使用總結(jié)

    這篇文章主要介紹了Java String中的split方法使用總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java JNDI案例詳解

    Java JNDI案例詳解

    這篇文章主要介紹了Java JNDI案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 淺析Java中接口和抽象類的七大區(qū)別

    淺析Java中接口和抽象類的七大區(qū)別

    Java 是一門面向?qū)ο蟮木幊陶Z言,面向?qū)ο蟮木幊陶Z言有四大特征:抽象、封裝、繼承和多態(tài)。本文介紹的接口和抽象類就是面向?qū)ο缶幊讨小俺橄蟆钡木唧w實現(xiàn)。本文也將為大家詳細講一下二者的區(qū)別,需要的可以參考一下
    2021-12-12
  • Java成員變量默認值原理詳解

    Java成員變量默認值原理詳解

    這篇文章主要介紹了Java成員變量默認值原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Java實現(xiàn)特定范圍的完數(shù)輸出算法示例

    Java實現(xiàn)特定范圍的完數(shù)輸出算法示例

    這篇文章主要介紹了Java實現(xiàn)特定范圍的完數(shù)輸出算法,簡單說明了完數(shù)的概念、計算原理并結(jié)合實例形式分析了java針對給定范圍內(nèi)的完數(shù)輸出操作實現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • Java刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾)

    Java刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾)

    下面小編就為大家?guī)硪黄狫ava刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾) 。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 淺談Java中ArrayList線程不安全怎么辦

    淺談Java中ArrayList線程不安全怎么辦

    本文主要介紹了Java中ArrayList線程不安全怎么辦,主要有三種解決的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 詳解SpringCloud-Alibaba-Seata分布式事務

    詳解SpringCloud-Alibaba-Seata分布式事務

    這篇文章主要介紹了SpringCloud-Alibaba-Seata分布式事務的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Spring Boot 防止接口惡意刷新和暴力請求的實現(xiàn)

    Spring Boot 防止接口惡意刷新和暴力請求的實現(xiàn)

    本文主要介紹了Spring Boot 防止接口惡意刷新和暴力請求的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Java并發(fā)編程線程間通訊實現(xiàn)過程詳解

    Java并發(fā)編程線程間通訊實現(xiàn)過程詳解

    這篇文章主要介紹了Java并發(fā)編程線程間通訊實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05

最新評論