Spring:DataSource注入到dao

  使用DOS命令创建数据库(Mysql)

    1. CREATE DATABASE book DEFAULT CHARACTER SET utf8;

      CREATE DATABASE book DEFAULT CHARACTER SET utf8;
    2. 使用该数据库
      use book
    3. 建表(name:书名;zuozhe:作者;cbs:出版社)
      create table myBook(
        name varchar(20),    
        zuozhe varchar(20),
        cbs varchar(50)
      );

  使用IDEA建立Maven项目,导入相关依赖

 1 <dependencies>
 2          <!--Spring相关依赖-->
 3         <dependency>
 4             <groupId>org.springframework</groupId>
 5             <artifactId>spring-context</artifactId>
 6             <version>4.3.13.RELEASE</version>
 7         </dependency>
 8 
 9         <dependency>
10             <groupId>org.springframework</groupId>
11             <artifactId>spring-jdbc</artifactId>
12             <version>4.2.5.RELEASE</version>
13         </dependency>
14         <!--Mysql驱动-->
15         <dependency>
16             <groupId>mysql</groupId>
17             <artifactId>mysql-connector-java</artifactId>
18             <version>5.1.41</version>
19         </dependency>
20 
21 
22     </dependencies>

  创建Spring的XML文件 :appSpring

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        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
5   
6 </beans>

  创建entity类

 1 package entity;
 2 
 3 public class Book {
 4     private String name;        //书名
 5     private String zuozhe;      //作者
 6     private String cbs;         //出版社
 7 
 8     public Book(){
 9 
10     }
11 
12     public Book(String name, String zuozhe, String cbs) {
13         this.name = name;
14         this.zuozhe = zuozhe;
15         this.cbs = cbs;
16     }
17 
18     public String getName() {
19         return name;
20     }
21 
22     public void setName(String name) {
23         this.name = name;
24     }
25 
26     public String getZuozhe() {
27         return zuozhe;
28     }
29 
30     public void setZuozhe(String zuozhe) {
31         this.zuozhe = zuozhe;
32     }
33 
34     public String getCbs() {
35         return cbs;
36     }
37 
38     public void setCbs(String cbs) {
39         this.cbs = cbs;
40     }
41 
42     @Override
43     public String toString() {
44         return "Book{" +
45                 "name='" + name + '\'' +
46                 ", zuozhe='" + zuozhe + '\'' +
47                 ", cbs='" + cbs + '\'' +
48                 '}';
49     }
50 }

  创建dao接口

 1 package dao;
 2 
 3 import entity.Book;
 4 
 5 import java.util.List;
 6 
 7 public interface BookDao {
 8     void insert(Book book);
 9     List<Book> queryAll() ;
10 }

  实现dao接口:配置DataSource

  1. 选择DriverManagerDataSource实现,此实现是没有连接池功能

  2. 选择dbcp 里面的DataSource实现,这个有连接池功能

  3. 选择c3p0里面的DataSource实现,这个有连接池功能

  4. 选择Alibaba里面的实现,这个有连接池功能

 

 1 package dao;
 2 
 3 import entity.Book;
 4 
 5 import javax.sql.DataSource;
 6 import java.sql.Connection;
 7 import java.sql.PreparedStatement;
 8 import java.sql.SQLException;
 9 import java.util.List;
10 
11 public class BookDaoImpl implements BookDao {
12 
13     private DataSource dataSource;
14 
15     public void setDataSource(DataSource dataSource) {
16         this.dataSource = dataSource;
17     }
18 
19     public Connection getConnection()  {
20         Connection connection = null;
21         try {
22             //获取连接对象、XML的配置信息
23             connection = dataSource.getConnection();
24         } catch (SQLException e) {
25             e.printStackTrace();
26         }
27         return connection;
28     }
29 
30     public void insert(Book book) {
31         Connection connection = getConnection();
32         String sql = "insert into myBook values(?,?,?)";
33         try {
34             PreparedStatement preparedStatement = connection.prepareStatement(sql);
35             preparedStatement.setString(1,book.getName());
36             preparedStatement.setString(2,book.getZuozhe());
37             preparedStatement.setString(3,book.getCbs());
38             preparedStatement.executeUpdate();
39             System.out.println("成功添加一条数据");
40             connection.close();
41         } catch (SQLException e) {
42             e.printStackTrace();
43         }
44 
45     }
46 
47     public List<Book> queryAll() {
48         return null;
49     }
50 }

  编写service

 1 package service;
 2 
 3 import dao.StudentDao;
 4 import entity.Student;
 5 
 6 public class StudentService {
 7     private StudentDao studentDao;
 8 
 9     public StudentDao getStudentDao() {
10         return studentDao;
11     }
12 
13     public void setStudentDao(StudentDao studentDao) {
14         this.studentDao = studentDao;
15     }
16 
17     public  void insert(Student student){
18         studentDao.insert(student);
19     }
20 }

  在XML配置Mysql链接信息,把到dao和service注入Spring,让Spring管理

 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        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 5 
 6     <!--Mysql配置信息-->
 7     <!--Spring提供的一个DataSource的实现:就是DriverManagerDataSource-->
 8     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 9         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
10         <property name="url" value="jdbc:mysql://localhost:3306/book"/>
11         <property name="username" value="root"/>
12         <property name="password" value="888888"/>
13     </bean>
14     <!--依赖上面的dataSource-->
15     <bean id="bookDao" class="dao.BookDaoImpl" >
16         <property name="dataSource" ref="dataSource"></property>
17     </bean>
18 
19     <bean id="bookService" class="service.BookService">
20         <property name="bookDao" ref="bookDao"></property>
21     </bean>
22    <!-- <bean id="dao" class="dao.BookDaoImpl" autowire="byType" />
23     <bean id="service" class="service.BookService" autowire="byType"/>-->
24 
25 </beans>

   Main测试

 1 package controller;
 2 
 3 import entity.Book;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 import service.BookService;
 7 
 8 public class Main {
 9     public static void main(String[] args) {
10         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("appSpring.xml");
11         BookService bookService = applicationContext.getBean("bookService",BookService.class);
12         Book book = new Book("静待花开","王文韦","南方出版");
13         bookService.insert(book);
14         Book book2 = new Book("三国","罗贯中","中央出版");
15         bookService.insert(book2);
16 
17     }
18 }