国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于 SpringBoot2.0+優(yōu)雅整合 SpringBoot+Mybatis

gghyoo / 2374人閱讀

摘要:基于最新的,是你學(xué)習(xí)的最佳指南。驅(qū)動(dòng)程序通過自動(dòng)注冊(cè),手動(dòng)加載類通常是不必要。由于加上了注解,如果轉(zhuǎn)賬中途出了意外和的錢都不會(huì)改變。三的方式項(xiàng)目結(jié)構(gòu)相比于注解的方式主要有以下幾點(diǎn)改變,非常容易實(shí)現(xiàn)。公眾號(hào)多篇文章被各大技術(shù)社區(qū)轉(zhuǎn)載。

Github 地址:https://github.com/Snailclimb/springboot-integration-examples(SpringBoot和其他常用技術(shù)的整合,可能是你遇到的講解最詳細(xì)的學(xué)習(xí)案例,力爭(zhēng)新手也能看懂并且能夠在看完之后獨(dú)立實(shí)踐?;谧钚碌?SpringBoot2.0+,是你學(xué)習(xí)SpringBoot 的最佳指南。) ,歡迎各位 Star。

SpringBoot 整合 Mybatis 有兩種常用的方式,一種就是我們常見的 xml 的方式 ,還有一種是全注解的方式。我覺得這兩者沒有誰比誰好,在 SQL 語句不太長的情況下,我覺得全注解的方式一定是比較清晰簡(jiǎn)潔的。但是,復(fù)雜的 SQL 確實(shí)不太適合和代碼寫在一起。

下面就開始吧!

目錄:

一 開發(fā)前的準(zhǔn)備

1.1 環(huán)境參數(shù)

1.2 創(chuàng)建工程

1.3 創(chuàng)建數(shù)據(jù)庫和 user 用戶表

1.4 配置 pom 文件中的相關(guān)依賴

1.5 配置 application.properties

1.6 創(chuàng)建用戶類 Bean

二 全注解的方式

2.1 Dao 層開發(fā)

2.2 service 層

2.3 Controller 層

2.4 啟動(dòng)類

2.5 簡(jiǎn)單測(cè)試

三 xml 的方式

3.1 Dao 層的改動(dòng)

3.2 配置文件的改動(dòng)

一 開發(fā)前的準(zhǔn)備 1.1 環(huán)境參數(shù)

開發(fā)工具:IDEA

基礎(chǔ)工具:Maven+JDK8

所用技術(shù):SpringBoot+Mybatis

數(shù)據(jù)庫:MySQL

SpringBoot版本:2.1.0

1.2 創(chuàng)建工程

創(chuàng)建一個(gè)基本的 SpringBoot 項(xiàng)目,我這里就不多說這方面問題了,具體可以參考下面這篇文章:

https://blog.csdn.net/qq_34337272/article/details/79563606

1.3 創(chuàng)建數(shù)據(jù)庫和 user 用戶表

我們的數(shù)據(jù)庫很簡(jiǎn)單,只有 4 個(gè)字段:用戶 id、姓名、年齡、余額,如下圖所示:

添加了“余額money”字段是為了給大家簡(jiǎn)單的演示一下事務(wù)管理的方式。

建表語句:

CREATE TABLE `user` (
  `id` int(13) NOT NULL AUTO_INCREMENT COMMENT "主鍵",
  `name` varchar(33) DEFAULT NULL COMMENT "姓名",
  `age` int(3) DEFAULT NULL COMMENT "年齡",
  `money` double DEFAULT NULL COMMENT "賬戶余額",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
1.4 配置 pom 文件中的相關(guān)依賴

由于要整合 springboot 和 mybatis 所以加入了artifactId 為 mybatis-spring-boot-starter 的依賴,由于使用了Mysql 數(shù)據(jù)庫 所以加入了artifactId 為 mysql-connector-java 的依賴。

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.2
        
        
            mysql
            mysql-connector-java
            runtime
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
1.5 配置 application.properties

由于我使用的是比較新的Mysql連接驅(qū)動(dòng),所以配置文件可能和之前有一點(diǎn)不同。

server.port=8333
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/erp?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=153963
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

注意:我們使用的 mysql-connector-java 8+ ,JDBC 連接到mysql-connector-java 6+以上的需要指定時(shí)區(qū) serverTimezone=GMT%2B8。另外我們之前使用配置 Mysql數(shù)據(jù)連接是一般是這樣指定driver-class-name=com.mysql.jdbc.Driver,但是現(xiàn)在不可以必須為 否則控制臺(tái)下面的異常:

Loading class `com.mysql.jdbc.Driver". This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver". The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

上面異常的意思是:com.mysql.jdbc.Driver 被棄用了。新的驅(qū)動(dòng)類是 com.mysql.cj.jdbc.Driver。驅(qū)動(dòng)程序通過SPI自動(dòng)注冊(cè),手動(dòng)加載類通常是不必要。

如果你非要寫把com.mysql.jdbc.Driver 改為com.mysql.cj.jdbc.Driver 即可。

1.6 創(chuàng)建用戶類 Bean
public class User {
    private int id;
    private String name;
    private int age;
    private double money;
    ...
    此處省略getter、setter以及 toString方法
}
二 全注解的方式

先來看一下 全注解的方式,這種方式和后面提到的 xml 的方式的區(qū)別僅僅在于 一個(gè)將 sql 語句寫在 java 代碼中,一個(gè)寫在 xml 配置文件中。全注方式解轉(zhuǎn)換成 xml 方式僅需做一點(diǎn)點(diǎn)改變即可,我在后面會(huì)提到。

項(xiàng)目結(jié)構(gòu):

2.1 Dao 層開發(fā)

UserDao.java

@Mapper
public interface UserDao {
    /**
     * 通過名字查詢用戶信息
     */
    @Select("SELECT * FROM user WHERE name = #{name}")
    User findUserByName(@Param("name") String name);

    /**
     * 查詢所有用戶信息
     */
    @Select("SELECT * FROM user")
    List findAllUser();

    /**
     * 插入用戶信息
     */
    @Insert("INSERT INTO user(name, age,money) VALUES(#{name}, #{age}, #{money})")
    void insertUser(@Param("name") String name, @Param("age") Integer age, @Param("money") Double money);

    /**
     * 根據(jù) id 更新用戶信息
     */
    @Update("UPDATE  user SET name = #{name},age = #{age},money= #{money} WHERE id = #{id}")
    void updateUser(@Param("name") String name, @Param("age") Integer age, @Param("money") Double money,
                    @Param("id") int id);

    /**
     * 根據(jù) id 刪除用戶信息
     */
    @Delete("DELETE from user WHERE id = #{id}")
    void deleteUser(@Param("id") int id);
}
2.2 service 層
@Service
public class UserService {
    @Autowired
    private UserDao userDao;


    /**
     * 根據(jù)名字查找用戶
     */
    public User selectUserByName(String name) {
        return userDao.findUserByName(name);
    }

    /**
     * 查找所有用戶
     */
    public List selectAllUser() {
        return userDao.findAllUser();
    }

    /**
     * 插入兩個(gè)用戶
     */
    public void insertService() {
        userDao.insertUser("SnailClimb", 22, 3000.0);
        userDao.insertUser("Daisy", 19, 3000.0);
    }

    /**
     * 根據(jù)id 刪除用戶
     */

    public void deleteService(int id) {
        userDao.deleteUser(id);
    }

    /**
     * 模擬事務(wù)。由于加上了 @Transactional注解,如果轉(zhuǎn)賬中途出了意外 SnailClimb 和 Daisy 的錢都不會(huì)改變。
     */
    @Transactional
    public void changemoney() {
        userDao.updateUser("SnailClimb", 22, 2000.0, 3);
        // 模擬轉(zhuǎn)賬過程中可能遇到的意外狀況
        int temp = 1 / 0;
        userDao.updateUser("Daisy", 19, 4000.0, 4);
    }
}
2.3 Controller 層
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/query")
    public User testQuery() {
        return userService.selectUserByName("Daisy");
    }

    @RequestMapping("/insert")
    public List testInsert() {
        userService.insertService();
        return userService.selectAllUser();
    }


    @RequestMapping("/changemoney")
    public List testchangemoney() {
        userService.changemoney();
        return userService.selectAllUser();
    }

    @RequestMapping("/delete")
    public String testDelete() {
        userService.deleteService(3);
        return "OK";
    }

}
2.4 啟動(dòng)類
//此注解表示SpringBoot啟動(dòng)類
@SpringBootApplication
// 此注解表示動(dòng)態(tài)掃描DAO接口所在包,實(shí)際上不加下面這條語句也可以找到
@MapperScan("top.snailclimb.dao")
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }

}
2.5 簡(jiǎn)單測(cè)試

上述代碼經(jīng)過測(cè)試都沒問題,這里貼一下根據(jù)姓名查詢的測(cè)試的結(jié)果。

三 xml 的方式

項(xiàng)目結(jié)構(gòu):

相比于注解的方式主要有以下幾點(diǎn)改變,非常容易實(shí)現(xiàn)。

3.1 Dao 層的改動(dòng)

我這里只演示一個(gè)根據(jù)姓名找人的方法。

UserDao.java

@Mapper
public interface UserDao {
    /**
     * 通過名字查詢用戶信息
     */
    User findUserByName(String name);

}

UserMapper.xml






    

3.2 配置文件的改動(dòng)

配置文件中加入下面這句話:

mybatis.mapper-locations=classpath:mapper/*.xml

ThoughtWorks準(zhǔn)入職Java工程師。專注Java知識(shí)分享!開源 Java 學(xué)習(xí)指南——JavaGuide(12k+ Star)的作者。公眾號(hào)多篇文章被各大技術(shù)社區(qū)轉(zhuǎn)載。公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字“1”可以領(lǐng)取一份我精選的Java資源哦!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72494.html

相關(guān)文章

  • SpringBoot2.0之五 優(yōu)雅整合SpringBoot2.0+MyBatis+druid+Pa

    摘要:當(dāng)禁用時(shí),所有關(guān)聯(lián)對(duì)象都會(huì)即時(shí)加載。不同的驅(qū)動(dòng)在這方便表現(xiàn)不同。參考驅(qū)動(dòng)文檔或充分測(cè)試兩種方法來決定所使用的驅(qū)動(dòng)。需要適合的驅(qū)動(dòng)。系統(tǒng)默認(rèn)值是設(shè)置字段和類是否支持駝峰命名的屬性。 ??上篇文章我們介紹了SpringBoot和MyBatis的整合,可以說非常簡(jiǎn)單快捷的就搭建了一個(gè)web項(xiàng)目,但是在一個(gè)真正的企業(yè)級(jí)項(xiàng)目中,可能我們還需要更多的更加完善的框架才能開始真正的開發(fā),比如連接池、分...

    hatlonely 評(píng)論0 收藏0
  • SpringBoot2.0之四 簡(jiǎn)單整合MyBatis

    摘要:從最開始的到后來的,到目前的隨著框架的不斷更新?lián)Q代,也為我們廣大的程序猿提供了更多的方便,一起搭建一個(gè)從控制層到持久層的項(xiàng)目可能需要一兩天的時(shí)間,但是采用的方式,我們可能只需要分鐘就能輕松完成一個(gè)項(xiàng)目的搭建,下面我們介紹一下整合的方法一新建 ??從最開始的SSH(Struts+Spring+Hibernate),到后來的SMM(SpringMVC+Spring+MyBatis),到目前...

    Sanchi 評(píng)論0 收藏0
  • 新手也能實(shí)現(xiàn),基于SpirngBoot2.0+ 的 SpringBoot+Mybatis 多數(shù)據(jù)源配

    摘要:下面基于,帶著大家看一下中如何配置多數(shù)據(jù)源。注意版本不一致導(dǎo)致的一些小問題。配置配置兩個(gè)數(shù)據(jù)源數(shù)據(jù)庫和數(shù)據(jù)庫注意事項(xiàng)在配置數(shù)據(jù)源的過程中主要是寫成和。五啟動(dòng)類此注解表示啟動(dòng)類這樣基于的多數(shù)據(jù)源配置就已經(jīng)完成了,兩個(gè)數(shù)據(jù)庫都可以被訪問了。 在上一篇文章《優(yōu)雅整合 SpringBoot+Mybatis ,可能是你見過最詳細(xì)的一篇》中,帶著大家整合了 SpringBoot 和 Mybatis...

    shiina 評(píng)論0 收藏0
  • SpringBoot2.0之三 優(yōu)雅整合Spring Data JPA

    摘要:的配置后在其他低版本的中也有使用這種配置的,具體根據(jù)版本而定。等注解是的相關(guān)知識(shí),后面的文章將詳細(xì)講述。 ??在我們的實(shí)際開發(fā)的過程中,無論多復(fù)雜的業(yè)務(wù)邏輯到達(dá)持久層都回歸到了增刪改查的基本操作,可能會(huì)存在關(guān)聯(lián)多張表的復(fù)雜sql,但是對(duì)于單表的增刪改查也是不可避免的,大多數(shù)開發(fā)人員對(duì)于這個(gè)簡(jiǎn)單而繁瑣的操作都比較煩惱。 ??為了解決這種大量枯燥的簡(jiǎn)單數(shù)據(jù)庫操作,大致的解決該問題的有三種方...

    ningwang 評(píng)論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務(wù)方面的使用。目標(biāo)達(dá)成后還會(huì)有去構(gòu)建微服務(wù),希望大家多多支持。原文地址手把手教程優(yōu)雅的應(yīng)用四手把手實(shí)現(xiàn)后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學(xué)習(xí) | 掘金技術(shù)征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

gghyoo

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<