成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring的數(shù)據(jù)庫(kù)編程淺入淺出

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
數(shù)據(jù)庫(kù)編程是互聯(lián)網(wǎng)編程的基礎(chǔ),Spring框架為開發(fā)者提供了JDBC模板模式,即jdbcTemplate,它可以簡(jiǎn)化許多代碼,需要提醒的是jdbcTemplate在實(shí)際應(yīng)用中并不常用,但我覺得對(duì)新手來(lái)說(shuō)蒼蠅再小也是肉,要想往前走,就得把這些小肉先吃了。

[[317670]]

 前言

先入門,把核心理解后再回過(guò)頭來(lái)看這些我覺得效果更好,不知道說(shuō)的對(duì)不對(duì),要是理解不當(dāng),還望指教。此篇為Spring的數(shù)據(jù)庫(kù)編程,主要講jdbcTemplate,讓初學(xué)者直接上手。

數(shù)據(jù)庫(kù)切入

數(shù)據(jù)庫(kù)編程是互聯(lián)網(wǎng)編程的基礎(chǔ),Spring框架為開發(fā)者提供了JDBC模板模式,即jdbcTemplate,它可以簡(jiǎn)化許多代碼,需要提醒的是jdbcTemplate在實(shí)際應(yīng)用中并不常用,但我覺得對(duì)新手來(lái)說(shuō)蒼蠅再小也是肉,要想往前走,就得把這些小肉先吃了。

Spring JDBC配置

使用Spring JDBC操作數(shù)據(jù)庫(kù),需要對(duì)其進(jìn)行配置,配置如下

  1. <!--配置spring-jdbcTemplate--> 
  2. <!--配置數(shù)據(jù)源-->  
  3. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
  4. <!--MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)-->  
  5. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
  6. <!--連接數(shù)據(jù)庫(kù)的URL-->  
  7. <property name="url" value="jdbc:mysql://localhost:3306/bbb?useUnicode=true&amp;characterEncoding=UTF-8"></property> 
  8. <!--連接數(shù)據(jù)庫(kù)的用戶名--> 
  9. <property name="username" value="root"></property>  
  10. <!--連接數(shù)據(jù)庫(kù)的密碼--> 
  11. <property name="password" value="root"></property>  
  12. </bean>  
  13. <!--配置JDBC模板-->  
  14. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" 
  15. <property name="dataSource" ref="dataSource"></property>  
  16. </bean> 

配置JDBC模板時(shí)需要將dataSource注入到j(luò)dbcTemplate,而在數(shù)據(jù)訪問(wèn)層(Dao類)需要使用jdbcTemplate時(shí)也需要將jdbc Template注入到對(duì)應(yīng)的Bean中,我在這演示用最簡(jiǎn)單的注解注入

 

  1. @Repository("userDao" 
  2. public class UserDaoImpl implements UserDao {  
  3. @Autowired  
  4. //使用配置文件中的JDBC模板  
  5. private JdbcTemplate jdbcTemplate;  

Spring Jdbc Template的常用方法

在上面我們獲取了JDBC模板,下面我來(lái)說(shuō)如何使用它。首先需要了解JdbcTemplate常用的方法,該類的常用方法是update和query.

1、public int update(String sql,Object args[])

該方法可以對(duì)數(shù)據(jù)表進(jìn)行增加、修改、刪除等操作。使用args[]設(shè)置SQL語(yǔ)句中的參數(shù),并返回更新的行數(shù)。

示例如下:

 

  1. public void add() {  
  2. String insertSql = "insert into user values(null,?,?)" 
  3. Object parem1[] = {"成功","123456"};  
  4. jdbcTemplate.update(insertSql,parem1);  
  5. System.out.println("UserDao中的添加功能實(shí)現(xiàn)了");  

2、public List query(String sql,RowMapper rowMapper,Object args[])

該方法可以對(duì)數(shù)據(jù)表進(jìn)行查詢操作,rowMapper將結(jié)果集映射到用戶自定義的類中(前提是自定義類中的屬性要與數(shù)據(jù)表的字段對(duì)應(yīng))。

示例如下:

  1. public void query() {  
  2. String selectSql = "select * from user" 
  3. RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);  
  4. List<User> list = jdbcTemplate.query(selectSql,rowMapper,null);  
  5. System.out.println("UserDao中的查詢功能實(shí)現(xiàn)了"); 
  6.  

案例輔助

Pom.xml

  1. <dependencies> 
  2. <dependency> 
  3. <groupId>junit</groupId> 
  4. <artifactId>junit</artifactId> 
  5. <version>4.11</version> 
  6. <scope>test</scope> 
  7. </dependency> 
  8. <dependency> 
  9. <groupId>javax.servlet</groupId> 
  10. <artifactId>javax.servlet-api</artifactId> 
  11. <version>3.1.0</version> 
  12. </dependency> 
  13.  
  14.  
  15. <dependency> 
  16. <groupId>javax.servlet</groupId> 
  17. <artifactId>jstl</artifactId> 
  18. <version>1.2</version> 
  19. </dependency> 
  20.  
  21.  
  22. <dependency> 
  23. <groupId>mysql</groupId> 
  24. <artifactId>mysql-connector-java</artifactId> 
  25. <version>5.1.38</version> 
  26. </dependency> 
  27. <!--spring核心依賴--> 
  28. <dependency> 
  29. <groupId>org.springframework</groupId> 
  30. <artifactId>spring-core</artifactId> 
  31. <version>5.1.5.RELEASE</version> 
  32. </dependency> 
  33. <dependency> 
  34. <groupId>org.springframework</groupId> 
  35. <artifactId>spring-beans</artifactId> 
  36. <version>5.1.5.RELEASE</version> 
  37. </dependency> 
  38. <dependency> 
  39. <groupId>org.springframework</groupId> 
  40. <artifactId>spring-context</artifactId> 
  41. <version>5.1.5.RELEASE</version> 
  42. </dependency> 
  43. <dependency> 
  44. <groupId>org.springframework</groupId> 
  45. <artifactId>spring-aop</artifactId> 
  46. <version>5.1.5.RELEASE</version> 
  47. </dependency> 
  48. <dependency> 
  49. <groupId>org.springframework</groupId> 
  50. <artifactId>spring-jdbc</artifactId> 
  51. <version>5.1.5.RELEASE</version> 
  52. </dependency> 
  53. <dependency> 
  54. <groupId>org.springframework</groupId> 
  55. <artifactId>spring-web</artifactId> 
  56. <version>5.1.5.RELEASE</version> 
  57. </dependency> 
  58. <dependency> 
  59. <groupId>org.springframework</groupId> 
  60. <artifactId>spring-webmvc</artifactId> 
  61. <version>5.1.5.RELEASE</version> 
  62. </dependency> 
  63. <dependency> 
  64. <groupId>org.springframework</groupId> 
  65. <artifactId>spring-expression</artifactId> 
  66. <version>5.1.5.RELEASE</version> 
  67. </dependency> 
  68. <dependency> 
  69. <groupId>org.springframework</groupId> 
  70. <artifactId>spring-tx</artifactId> 
  71. <version>5.1.5.RELEASE</version> 
  72. </dependency> 
  73. <!--日志相關(guān)--> 
  74. <dependency> 
  75. <groupId>commons-logging</groupId> 
  76. <artifactId>commons-logging</artifactId> 
  77. <version>1.2</version> 
  78. </dependency> 
  79.  
  80.  
  81. </dependencies> 

spring-config.xml

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4. xmlns:context="http://www.springframework.org/schema/context" 
  5. xmlns:tx="http://www.springframework.org/schema/tx" 
  6. xmlns:mvc="http://www.springframework.org/schema/mvc" 
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans 
  8. http://www.springframework.org/schema/beans/spring-beans.xsd 
  9. http://www.springframework.org/schema/context 
  10. http://www.springframework.org/schema/context/spring-context.xsd 
  11. http://www.springframework.org/schema/tx 
  12. http://www.springframework.org/schema/tx/spring-tx.xsd 
  13. http://www.springframework.org/schema/mvc 
  14. http://www.springframework.org/schema/mvc/spring-mvc.xsd 
  15. "> 
  16. <!--配置注解要掃描的包--> 
  17. <context:component-scan base-package="com.my"></context:component-scan> 
  18. <mvc:annotation-driven></mvc:annotation-driven> 
  19.  
  20.  
  21. <!--將指定類TestDaoImpl配置給Spring,讓Spring創(chuàng)建其實(shí)例--> 
  22. <bean id="testDIDao" class="com.my.dao.impl.TestDaoImpl"/> 
  23. <!--使用構(gòu)造方法注入--> 
  24. <!--<bean id="testDIService" class="com.my.service.impl.TestServiceImpl" >--> 
  25. <!--&lt;!&ndash;將TestDIDao注入到TestDIServiceImpl類的屬性testDao上&ndash;&gt;--> 
  26. <!--<constructor-arg index="0" ref="testDIDao"/>--> 
  27. <!--</bean>--> 
  28. <!--使用setter方法注入--> 
  29. <bean id="testDIService" class="com.my.service.impl.TestServiceImpl"
  30. <!--調(diào)用TestDIServiceImpl類的setter方法,將TestDao注入到TestServiceImpl類的屬性testDao上--> 
  31. <property name="testDao" ref="testDIDao"></property> 
  32. </bean> 
  33.  
  34.  
  35. <!--配置spring-jdbcTemplate--> 
  36. <!--配置數(shù)據(jù)源--> 
  37. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
  38. <!--MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)--> 
  39. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 
  40. <!--連接數(shù)據(jù)庫(kù)的URL--> 
  41. <property name="url" value="jdbc:mysql://localhost:3306/bbb?useUnicode=true&amp;characterEncoding=UTF-8"></property> 
  42. <!--連接數(shù)據(jù)庫(kù)的用戶名--> 
  43. <property name="username" value="root"></property> 
  44. <!--連接數(shù)據(jù)庫(kù)的密碼--> 
  45. <property name="password" value="root"></property> 
  46. </bean> 
  47. <!--配置JDBC模板--> 
  48. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
  49. <property name="dataSource" ref="dataSource"></property> 
  50. </bean> 
  51. <!--配置事務(wù)--> 
  52. <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
  53. <property name="dataSource" ref="dataSource"></property> 
  54. </bean> 
  55. <!--注冊(cè)事務(wù)注解驅(qū)動(dòng)--> 
  56. <tx:annotation-driven transaction-manager="txManager"></tx:annotation-driven> 
  57. </beans> 

User

  1. package com.my.pojo; 
  2.  
  3.  
  4. public class User { 
  5. private int id; 
  6. private String username; 
  7. private String password
  8.  
  9.  
  10. public User() { 
  11.  
  12.  
  13. public User(int id, String username, String password) { 
  14. this.id = id; 
  15. this.username = username; 
  16. this.password = password
  17.  
  18.  
  19. public int getId() { 
  20. return id; 
  21.  
  22.  
  23. public void setId(int id) { 
  24. this.id = id; 
  25.  
  26.  
  27. public String getUsername() { 
  28. return username; 
  29.  
  30.  
  31. public void setUsername(String username) { 
  32. this.username = username; 
  33.  
  34.  
  35. public String getPassword() { 
  36. return password
  37.  
  38.  
  39. public void setPassword(String password) { 
  40. this.password = password
  41.  
  42.  
  43. @Override 
  44. public String toString() { 
  45. return "User{" + 
  46. "id=" + id + 
  47. ", username='" + username + ''' + 
  48. ", password='" + password + ''' + 
  49. '}'

UserDao

  1. package com.my.dao;   
  2. public interface UserDao {  
  3. public void add();  
  4. public void delete();  
  5. public void update();  
  6. public void query();  

UserDaoImpl

  1. @Override 
  2. public void update() { 
  3. String updateSql = "update user set username=? , password=? where id =?"
  4. Object parem3[] = {"修改","654321",3}; 
  5. jdbcTemplate.update(updateSql,parem3); 
  6. System.out.println("UserDao中的修改功能實(shí)現(xiàn)了"); 
  7.  
  8.  
  9. @Override 
  10. public void query() { 
  11. String selectSql = "select * from user"
  12. RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class); 
  13. List<User> list = jdbcTemplate.query(selectSql,rowMapper,null); 
  14. System.out.println("UserDao中的查詢功能實(shí)現(xiàn)了"); 
  15. for (User user : list){ 
  16. System.out.println(user); 

測(cè)試Test3

  1. package com.my.test; 
  2.  
  3.  
  4. import com.my.dao.UserDao; 
  5. import org.springframework.beans.factory.annotation.Autowired; 
  6. import org.springframework.context.ApplicationContext; 
  7. import org.springframework.context.support.ClassPathXmlApplicationContext; 
  8.  
  9.  
  10. public class Test3 { 
  11. @Autowired 
  12. private UserDao userDao; 
  13.  
  14.  
  15. public static void main(String[] args) { 
  16.  
  17.  
  18. ApplicationContext appCon = new ClassPathXmlApplicationContext("spring-config.xml"); 
  19. //從容器中獲取目標(biāo)對(duì)象 
  20. UserDao userDao = (UserDao) appCon.getBean("userDao"); 
  21.  
  22.  
  23. //userDao.add(); 
  24. userDao.delete(); 
  25. userDao.update(); 
  26. userDao.query(); 

測(cè)試結(jié)果

 

結(jié)束

對(duì)于Spring JbdcTemplate的講解到此結(jié)束,對(duì)于新手來(lái)說(shuō)沒必要太復(fù)雜,能完成增刪改查做個(gè)入門即可,等了解了再詳細(xì)學(xué)習(xí)才有幫助,希望能對(duì)一些需要的朋友有用吧。

責(zé)任編輯:武曉燕 來(lái)源: 泰斗賢若如
相關(guān)推薦

2011-04-22 10:23:50

Server Push

2021-02-07 08:02:33

Linux內(nèi)核開源

2021-05-17 09:58:00

MySQL索引數(shù)據(jù)庫(kù)

2017-09-07 15:43:24

數(shù)據(jù)庫(kù)MongoDBMySQL

2022-01-06 07:59:32

WebGPUOpenGL引擎

2022-10-31 09:00:24

Promise數(shù)組參數(shù)

2023-12-04 13:22:00

JavaScript異步編程

2025-03-27 09:38:35

2017-06-06 15:34:41

物聯(lián)網(wǎng)數(shù)據(jù)庫(kù)壓縮

2017-06-05 14:50:33

大數(shù)據(jù)數(shù)據(jù)庫(kù)壓縮

2021-06-21 08:58:14

MySQL數(shù)據(jù)庫(kù)Pages

2022-01-12 08:54:52

Spring編程架構(gòu)設(shè)計(jì)

2025-02-06 09:47:33

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2020-05-27 20:25:47

SpringSpringBoot數(shù)據(jù)

2009-11-30 16:46:29

學(xué)習(xí)Linux

2019-11-11 14:51:19

Java數(shù)據(jù)結(jié)構(gòu)Properties

2022-12-02 09:13:28

SeataAT模式

2022-09-29 09:19:04

線程池并發(fā)線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品一区二区三区四区高清 | av在线电影网| aaaa一级毛片 | 国产精品一区二区在线 | 日本aaaa| 99久久99久久精品国产片果冰 | 亚洲福利网站 | 国产偷自视频区视频 | 欧美精品一区二区在线观看 | jlzzjlzz国产精品久久 | 日本a视频 | 国产精品久久久久久久久久三级 | 国产 日韩 欧美 在线 | 日韩电影免费在线观看中文字幕 | 国产日韩欧美一区二区 | 日韩激情网 | 国产精品视频久久 | 国产日韩欧美精品一区二区三区 | 亚洲精品成人 | 久久综合久 | 国产精品视频一二三区 | 91精品一区二区三区久久久久 | 99re在线视频精品 | 91在线精品一区二区 | 孕妇一级毛片 | 欧美一级在线 | 狠狠色综合欧美激情 | 精品一区二区久久 | 黄色网络在线观看 | 91亚洲欧美 | 亚洲免费精品一区 | 午夜影院在线观看免费 | 日韩av资源站 | 精品国产乱码久久久久久88av | 欧美一级欧美一级在线播放 | 激情伊人网 | 亚洲成人精品影院 | 国产精品亚洲成在人线 | 日韩高清三区 | 亚洲欧美日韩中文在线 | 色免费在线视频 |