一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 淺析Spring的JdbcTemplate方法

淺析Spring的JdbcTemplate方法

2020-08-01 15:26James_shu Java教程

本篇淺析Spring的JdbcTemplate方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

spring對于數據訪問層提供了多種的模板技術。如果直接使用JDBC,那么可以選擇JdbcTemplate、如果使用的是對象關系映射框架,使用hibernate應該使用HibernateTemplate模板,使用JPA則應該使用JpaTemplate。

除此之外,Spring框架為每一項的持久層技術都提供了相應的幫助類來簡化操作。對于Jdbc提供了JdbcDaoSupport類、對于Hibernate技術提供了HibernateDaoSupport類、對于MyBatis提供了SqlMapClientDaoSupport類。

本篇主要介紹Spring如何使用JdbcTemplate來訪問關系型數據庫。

1.首先引入使用Spring的jdbc模塊時的jar文件(maven項目可引入對應的依賴)。

  • spring-beans-3.2.0.RELEASE.jar
  • spring-context-3.2.0.RELEASE.jar
  • spring-core-3.2.0.RELEASE.jar
  • spring-expression-3.2.0.RELEASE.jar
  • commons-logging-1.2.jar
  • spring-jdbc-3.2.0.RELEASE.jar
  • spring-tx-3.2.0.RELEASE.jar

對應的數據庫驅動(這里采用mysql)

2.在src下引入兩個文件:applicationContext.xml和log4j.xml

3.下面以連接兩種數據庫連接池的技術來介紹Spring關于JdbcTemplate的使用:

使用Spring內置的數據庫連接池:

?
1
2
3
4
5
6
7
8
9
DriverManagerDataSource dataSource=new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql:///springjdbc");
    dataSource.setUsername("root");
    dataSource.setPassword("1997WFY.....");
 
    JdbcTemplate template=new JdbcTemplate();
    template.setDataSource(dataSource);
    template.execute("create table book(id int primary key auto_increment,name varchar(20) not null,author varchar(25))");

或者:

?
1
2
3
4
5
6
7
8
9
10
<!-- XML配置Spring默認的連接池 -->
<bean id="driverManagerDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql:///springjdbc"/>
  <property name="username" value="root"/>
  <property name="password" value="1997WFY....."/>
</bean>
<bean class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource" ref="driverManagerDataSource"/>
</bean>

Java代碼使用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * @author BeautifulSoup
 * 首先使用Spring內置的連接池
 */
@ContextConfiguration("classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringJdbcTest {
 
  @Autowired
  private JdbcTemplate template;
 
  @Test
  public void testDriverManagerDataSource() {
    template.execute("create table book(id int primary key auto_increment,name varchar(20) not null,author varchar(25))");
  }
 
}

使用世界上性能最好的Druid連接池:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!-- 配置Druid的連接池 -->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql:///springjdbc" />
  <property name="username" value="root" />
  <property name="password" value="1997WFY....." />
  <!-- 設置初始的連接數目,最小的連接數,最大的連接數 -->
  <property name="initialSize" value="1" />
  <property name="minIdle" value="1" />
  <property name="maxActive" value="8" />
  <!-- 配置獲取連接等待超時的時間 -->
  <property name="maxWait" value="10000" />
  <!-- 配置間隔多久才進行一次檢測需要關閉的空閑連接 -->
  <property name="timeBetweenEvictionRunsMillis" value="60000" />
  <!-- 配置一個連接在池中最小的生存時間 -->
  <property name="minEvictableIdleTimeMillis" value="300000" />
  <property name="testWhileIdle" value="true" />
  <!-- 這里建議配置為TRUE,防止取到的連接不可用 -->
  <property name="testOnBorrow" value="true" />
  <property name="testOnReturn" value="false" />
  <!-- 打開PSCache,并且指定每個連接上PSCache的大小 -->
  <property name="poolPreparedStatements" value="true" />
  <property name="maxPoolPreparedStatementPerConnectionSize"
    value="20" />
  <!-- 這里配置提交方式,默認就是TRUE,可以不用配置 -->
  <property name="defaultAutoCommit" value="true" />
  <!-- 驗證連接有效與否的SQL,不同的數據配置不同 -->
  <property name="validationQuery" value="select 1 " />
  <property name="filters" value="stat" />
</bean>
<bean class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource" ref="druidDataSource" />
</bean>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * @author BeautifulSoup
 * 首先使用Spring內置的連接池
 */
@ContextConfiguration("classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringJdbcTest {
  @Autowired
  private JdbcTemplate template;
  @Test
  public void testSpringJdbc() {
    template.execute("create table book(id int primary key auto_increment,name varchar(20) not null,author varchar(25))");
  }
}

4.使用得到的JdbcTemplate進行基本的增刪改查:

首先創建實體類對象,

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * @author BeautifulSoup
 * 創建實體類對象
 */
public class Book {
  private Integer id;
  private String name;
  private String author;
  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 getAuthor() {
    return author;
  }
  public void setAuthor(String author) {
    this.author = author;
  }
  @Override
  public String toString() {
    return "Book [id=" + id + ", name=" + name + ", author=" + author + "]";
  }
}

在配置文件中配置bean:

?
1
2
3
<bean class="com.fuyunwang.springjdbc.dao.BookDao">
    <property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>

Dao層進行持久層的開發:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
 * @author BeautifulSoup 完成基本的增刪改查
 */
public class BookDao extends JdbcDaoSupport {
 
  public void add(Book book) {
    String sql = "insert into book values(?,?,?)";
    getJdbcTemplate().update(sql, book.getId(), book.getName(),
        book.getAuthor());
  }
 
  public void update(Book book) {
    String sql = "update book set name = ? , author = ? where id =?";
    getJdbcTemplate().update(sql, book.getName(), book.getAuthor(),
        book.getId());
  }
 
  public void delete(Book book) {
    String sql = "delete from book where id =?";
    getJdbcTemplate().update(sql, book.getId());
  }
 
  public int findCount() {
    String sql = "select count(*) from book";
    return getJdbcTemplate().queryForInt(sql);
  }
 
  public String findNameById(int id) {
    String sql = "select name from book where id = ?";
    return getJdbcTemplate().queryForObject(sql, String.class, id);
  }
 
  public Book findById(int id) {
    String sql = "select * from book where id = ?";
    return getJdbcTemplate().queryForObject(sql, new BookMapper(), id);
  }
 
  public List<Book> findAll(){
    String sql="select * from book";
    return getJdbcTemplate().query(sql, new BookMapper());
  }
  class BookMapper implements RowMapper<Book> {
    public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
      Book book = new Book();
      book.setId(rs.getInt("id"));
      book.setName(rs.getString("name"));
      book.setAuthor(rs.getString("author"));
      return book;
    }
 
  }
}

單元測試,

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * @author BeautifulSoup
 * 首先使用Spring內置的連接池
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringJdbcTest {
 
  @Autowired
  private BookDao bookDao;
 
  @Test
  public void jdbcTemplateAdd(){
    Book book=new Book();
    book.setId(1);
    book.setName("SpringBoot實戰");
    book.setAuthor("Craig Walls");
    bookDao.add(book);
  }
 
 
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/James_shu/article/details/54647023?locationNum=3&fps=1

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: chinese男性厕所撒尿合集 | 好大好硬好深好爽gif图 | 热99在线视频| 亚洲视频男人的天堂 | 日本嫩模 | 久久伊人电影 | 男女做污事 | 日本又大又硬又粗的视频 | 91精品国产综合久久精品 | 亚洲成年人专区 | 午夜精品久久久久久 | 国产精品亚洲片在线观看麻豆 | 国产第一页在线视频 | 国产成人精品免费视频软件 | 西施打开双腿下面好紧 | 亚洲福利精品电影在线观看 | 九九99亚洲精品久久久久 | 性春院| 女黑人尺寸bbb | 亚洲高清影院 | 99精品热视频 | 午夜宅男网 | 欧美性一区二区三区 | 午夜在线观看免费完整直播网 | 国产精品一区二区在线观看完整版 | 日本sss在线高清观看 | 日韩欧美精品 | 亚洲品质自拍视频 | 免费高清www动漫视频播放器 | 日本福利网 | 国产 日韩 一区 | 91精品国产麻豆国产自产在线 | 欧美 亚洲 综合 卡通 另类 区 | 欧美坐爱 | 国产原创一区二区 | 成人免费体验区福利云点播 | 日韩一卡2卡3卡新区网站 | 我和黑色丝袜班主任 | xxxxx大片在线观看 | 99国产精品久久久久久久... | 放荡警察巨r麻麻出轨小说 范冰冰特黄xx大片 饭冈加奈子在线播放观看 法国老妇性xx在线播放 |