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项目,导入相关依赖

 <dependencies>
2  <!--Spring相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.13.RELEASE</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<!--Mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency> </dependencies>

  创建Spring的XML文件 :appSpring

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> </beans>

  创建entity类

 package entity;

 public class Book {
private String name; //书名
private String zuozhe; //作者
private String cbs; //出版社 public Book(){ } public Book(String name, String zuozhe, String cbs) {
this.name = name;
this.zuozhe = zuozhe;
this.cbs = cbs;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getZuozhe() {
return zuozhe;
} public void setZuozhe(String zuozhe) {
this.zuozhe = zuozhe;
} public String getCbs() {
return cbs;
} public void setCbs(String cbs) {
this.cbs = cbs;
} @Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", zuozhe='" + zuozhe + '\'' +
", cbs='" + cbs + '\'' +
'}';
}
}

  创建dao接口

 package dao;

 import entity.Book;

 import java.util.List;

 public interface BookDao {
void insert(Book book);
List<Book> queryAll() ;
}

  实现dao接口:配置DataSource

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

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

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

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

 package dao;

 import entity.Book;

 import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List; public class BookDaoImpl implements BookDao { private DataSource dataSource; public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
} public Connection getConnection() {
Connection connection = null;
try {
//获取连接对象、XML的配置信息
connection = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
} public void insert(Book book) {
Connection connection = getConnection();
String sql = "insert into myBook values(?,?,?)";
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,book.getName());
preparedStatement.setString(2,book.getZuozhe());
preparedStatement.setString(3,book.getCbs());
preparedStatement.executeUpdate();
System.out.println("成功添加一条数据");
connection.close();
} catch (SQLException e) {
e.printStackTrace();
} } public List<Book> queryAll() {
return null;
}
}

  编写service

 package service;

 import dao.StudentDao;
import entity.Student; public class StudentService {
private StudentDao studentDao; public StudentDao getStudentDao() {
return studentDao;
} public void setStudentDao(StudentDao studentDao) {
this.studentDao = studentDao;
} public void insert(Student student){
studentDao.insert(student);
}
}

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

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--Mysql配置信息-->
<!--Spring提供的一个DataSource的实现:就是DriverManagerDataSource-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/book"/>
<property name="username" value="root"/>
<property name="password" value="888888"/>
</bean>
<!--依赖上面的dataSource-->
<bean id="bookDao" class="dao.BookDaoImpl" >
<property name="dataSource" ref="dataSource"></property>
</bean> <bean id="bookService" class="service.BookService">
<property name="bookDao" ref="bookDao"></property>
</bean>
<!-- <bean id="dao" class="dao.BookDaoImpl" autowire="byType" />
<bean id="service" class="service.BookService" autowire="byType"/>--> </beans>

   Main测试

 package controller;

 import entity.Book;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.BookService; public class Main {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("appSpring.xml");
BookService bookService = applicationContext.getBean("bookService",BookService.class);
Book book = new Book("静待花开","王文韦","南方出版");
bookService.insert(book);
Book book2 = new Book("三国","罗贯中","中央出版");
bookService.insert(book2); }
}

Spring:DataSource注入到dao的更多相关文章

  1. Spring的三种通过XML实现DataSource注入方式

    Spring的三种通过XML实现DataSource注入方式: 1.使用Spring自带的DriverManagerDataSource 2.使用DBCP连接池 3.使用Tomcat提供的JNDI

  2. java后端开发三年!你还不了解Spring 依赖注入,凭什么给你涨薪

    前言 前两天和一个同学吃饭的时候同学跟我说了一件事,说他公司有个做了两年的人向他提出要涨薪资,他就顺口问了一个问题关于spring依赖注入的,那个要求涨薪的同学居然被问懵了...事后回家想了想这一块确 ...

  3. Spring 依赖注入方式详解

    平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想,即依赖类不由 ...

  4. Spring的注入问题

    作下笔记,Spring的注入问题[多个实例问题] 解决方案如下: package student.life.support.platform.service.impl; import javax.an ...

  5. Spring依赖注入 --- 简单使用说明

    Spring依赖注入 --- 简单使用说明 本文将对spring依赖注入的使用做简单的说明,enjoy your time! 1.使用Spring提供的依赖注入 对spring依赖注入的实现方法感兴趣 ...

  6. Spring依赖注入 --- 模拟实现

    Spring依赖注入 --- 模拟实现 面向接口编程,又称面向抽象编程, 数据库如果发生更改,对应的数据访问层也应该改变多写几个实现,需要用谁的时候在service里new谁就可以了面向抽象编程的好处 ...

  7. 模拟Spring依赖注入

    通过读取xml文件,利用反射动态加载类和方法,其实就是spring的注入机制模拟,可以清晰的看出整个运行流程 1.配置文件 applicationContext.xml <beans> & ...

  8. Spring、Spring依赖注入与编码剖析Spring依赖注入的原理

    Spring依赖注入 新建PersonIDao 和PersonDao底实现Save方法: public interface PersonIDao { public void save(); } pub ...

  9. Spring依赖注入原理

    接触过spring 的同学应该都知道依赖注入,依赖注入又称控制反转,其内涵就是,将创建某个bean的控制权力,由原来需要引用这个bean的bean转移(反转)到外部的spring IOC容器,由IOC ...

随机推荐

  1. 【最新】docker 安装elasticsearch + kibana步骤【第一篇_elasticsearch】

     最近在用docker 安装elasticsearch + kibana 遇到了很多坑,最后成功安装elasticsearch + kibana (6.8.1)版本   安装了一下午,现总结过程中遇到 ...

  2. BiLSTM介绍

    https://www.jiqizhixin.com/articles/2018-10-24-13 (机器之心)

  3. (二)Django连接本地mysql异常

    Pycharm连接数据库出现错误 管理员身份进入mysql数据库 命令: mysql -u root -p 重新进入mysql 在进入Pycharm发现连接成功

  4. jeesite框架常用插件

    1.分页: <div class="pagination">${page }</div> 2.日历:onclick="WdatePicker({d ...

  5. fzu 1901 next+脑洞

    题目大意: 给你一个字符串str,对于每个str长度为p的前缀,如果str[i]==str[p+i](p+i<len),那么我们认为它是一个periodic prefixs.求所有满足题意的前缀 ...

  6. jsp网站访问次数统计的几种方法

    我采用的是jsp网页,但是不管采用什么语言,原理是一样的. 第一种,单页面统计.就是说,只要点击这个页面就会统计一次. <body> <%!//在这种标记中定义的变量为全局变量 in ...

  7. Comet OJ - Contest #11 E ffort(组合计数+多项式快速幂)

    传送门. 题解: 考虑若最后的总伤害数是s,那么就挡板分配一下,方案数是\(C_{s-1}^{n-1}\). 那么问题在于总伤害数很大,不能一个一个的算. \(C_{s-1}^{n-1}\)的OGF是 ...

  8. 树————N叉树的层序遍历

    思想: 使用队的思想,将每一层的节点放入队列中,依次弹出,同时将其children放入队列. c++ /* // Definition for a Node. class Node { public: ...

  9. js-原生js触发器使用

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  10. XSS的原理分析与解剖(第二篇)

    0×01 前言: 上节(http://www.freebuf.com/articles/web/40520.html)已经说明了xss的原理及不同环境的构造方法.本期来说说XSS的分类及挖掘方法. 当 ...