日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1. 介紹

1.1 介紹

今天開始我們來學習JAVA操作MySQL數據庫的技巧,Java操作MySQL是借助JdbcTemplate這個對象來實現的。JdbcTemplate是一個多數據庫集中解決方案,而我們今天只講如何通過JdbcTemplate操作MySQL數據庫。

Java的生態非常成熟,基本上是無框架不項目,無論做任何功能都一定會基于一個框架來開發。福哥選擇的就是非常大眾的非常普及的SpringBoot框架,今天的教程也是基于這個SpringBoot框架的。因為今天的主題是使用JdbcTemplate操作MySQL數據庫,所以還不熟悉SpringBoot框架的童鞋們請自行惡補一下,福哥前面的文章也有介紹SpringBoot框架的,大家可以找來學習。

2. 安裝

2.1 配置

在Application.properties里面設置jdbc連接mysql的配置參數。

spring.datasource.url=jdbc:mysql://192.168.2.168:3306/test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=UTC&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=abcdef
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

2.2 依賴

在pom.xml里面添加jdbc的庫包,這里面包括jdbc庫包和mysql連接器庫包。

<!-- mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>

<!-- jdbc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
    <version>2.1.7.RELEASE</version>
</dependency>

3. 配置

因為SpringBoot倡導就是大部分功能都可以自動完成配置和初始化,完全不用我們寫代碼,這是所有Java程序員的夢想,如今SpringBoot給實現了~(怪不得那么多人只用SpringBoot開發呢。。)

3. 對象注入

在控制器對象里面注入JdbcTemplate類,就可以直接使用這個JdbcTemplate類的屬性來操作MySQL數據庫了,不要太爽!

@Autowired
JdbcTemplate jdbcTemplate;

4. 數據庫列表

JdbcTemplate沒有單獨的方法用來獲取數據庫列表,福哥是通過執行“show databases”語句獲取數據庫列表信息的。這是一個最簡單的查詢語句的示例,大家看好了。

List<Map<String, Object>> map = jdbcTemplate.queryForList("show databases");
SpringBoot通過JdbcTemplate操作MySQL數據庫

 

5. 數據表列表

同樣的JdbcTemplate也沒有用來獲取數據表列表的方法,福哥是通過執行“show tables”語句獲取當前數據庫的數據表列表的。

當前數據庫是在配置Jdbc數據源的時候通過jdbc-url配置的,所以福哥改了一下配置文件的jdbc-url參數,將數據庫設置成tfums庫了。

5.1 配置

spring.datasource.url=jdbc:mysql://192.168.2.168:3306/tfums?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=UTC&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=abcdef
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

5.2 程序

List<Map<String, Object>> map = jdbcTemplate.queryForList("show tables");
SpringBoot通過JdbcTemplate操作MySQL數據庫

 

6. 插入數據

6.1 插入數據

插入數據是通過JdbcTemplate的update方法執行一個SQL語句完成的,如果SQL語句有參數可以通過“?”替代,然后通過一個Object數組傳遞參數。因為Java是強類型語言,傳遞SQL參數相比較php就舒服多了,因為我們不需要指定參數的類型,JdbcTemplate會幫我們搞定。

插入數據是否成功就看有沒有異常拋出就可以了,沒插入成功一定會有原因的嘛~~

try {
    String sql = "insert into user (passwd, createDT, userFlag, userState, userName)" +
            " values (?, now(), ?, ?, ?)";
    Object[] values = new Object[]{"123456", 7, 1, "福哥教JdbcTemplate"};
    Integer ret = jdbcTemplate.update(sql, values);
    
    return ret.toString();
}
catch (Exception e){

    return e.getMessage();
}

第一次執行的時候不會報錯,多次執行就會有下面的錯誤信息了!

SpringBoot通過JdbcTemplate操作MySQL數據庫

 

6.2 獲取自增列數值

剛剛福哥向用戶表user插入了一條數據,用戶表user的主鍵是自增列,要獲取新數據的自增列的數值需要自己通過SQL獲得。

try {
    String sql = "insert into user (passwd, createDT, userFlag, userState, userName)" +
            " values (?, now(), ?, ?, ?)";
    Object[] values = new Object[]{"123456", 7, 1, "福哥教JdbcTemplate"};
    Integer ret = jdbcTemplate.update(sql, values);
    Map map = jdbcTemplate.queryForMap("select LAST_INSERT_ID() as newId");
    
    return map.get("newId").toString();
}
catch (Exception e){

    return e.getMessage();
}
SpringBoot通過JdbcTemplate操作MySQL數據庫

 

7. 更新數據

更新數據就是執行UPDATE語句了,更新語句的條件自然就是通過剛剛獲取到的自增列的數值了。更新是否成功也是看是否有異常拋出,如果沒有拋出就是執行成功了!

我們還可以通過update方法的返回值獲得本次更新語句影響了多少行的數據!

try {
    String sql = "update user set lastLoginDT = now()" +
            " where userID = ?";
    Object[] values = new Object[]{16};
    Integer ret = jdbcTemplate.update(sql, values);
    
    return ret.toString();
}
catch (Exception e){

    return e.getMessage();
}
SpringBoot通過JdbcTemplate操作MySQL數據庫

 

8. 刪除數據

刪除數據是通過DELETE語句完成的,刪除語句的條件自然也是根據自增列的數值了。

刪除是否成功也是通過是否有異常拋出判斷的,如果沒有異常拋出就表示執行成功了!

刪除行數也可以通過update方法的返回值得到!

try {
    String sql = "delete from user" +
            " where userID = ?";
    Object[] values = new Object[]{16};
    Integer ret = jdbcTemplate.update(sql, values);
    
    return ret.toString();
}
catch (Exception e){

    return e.getMessage();
}
SpringBoot通過JdbcTemplate操作MySQL數據庫

 

9. 查詢數據

查詢語句就是SELECT語句,這是數據庫操作里面最最常用的SQL語句了,單表查詢、多表連接查詢、子查詢、分組查詢、匯總查詢、結果排序等等一系列的SQL查詢技巧福哥今天不想在這里講解,我們只用一個最簡單的單表查詢演示JdbcTemplate是如何實現數據查詢的就可以了~~

JdbcTemplate有非常多的query方法可以適應各種情況的需要,而一般情況下查詢單行數據可以使用queryForMap,查詢多行數據可以使用queryForList,最終得到的都是Map<String, Object>這個經典的數據結構。

List<Map<String, Object>> map = jdbcTemplate.queryForList("select * from user order by userID desc");
String ret = "";
for(int i=0;i<map.size();i++){
    Map<String, Object> myMap = map.get(i);
    ret += myMap.get("userID").toString() + "@" + myMap.get("userName") + "<br />";
}
SpringBoot通過JdbcTemplate操作MySQL數據庫

 

10. 注意事項

使用JdbcTemplate對象操作MySQL數據庫有一些注意事項,大家一定要認真看哦~~

  • 一定要保證數據庫服務的健康狀態以及數據源參數的可用性,否則會一旦連接失敗就會造成項目無法啟動的風險。
  • 無論的讀取數據還是插入數據又或者是更新數據,最好將邏輯放入try ... catch語句里面,避免程序異常。

11. 總結

今天福哥給童鞋們演示了使用JdbcTemplate庫連接MySQL數據庫進行各種常規操作的技巧,這里面都是一些簡單的基礎操作。不過,即使是復制的SQL語句也和今天福哥將的內容大同小異,舉一反三就可以實現了。

后面福哥會找時間專門給童鞋們講解SQL語句的使用技巧,包括各種復雜的使用場景,各種復雜的查詢語句,大家可以先行自己研究研究。

 

https://tongfu.net/home/35/blog/513569.html

分享到:
標簽:JdbcTemplate
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定