Spring:DataSource注入到dao
Spring:DataSource注入到dao
使用DOS命令创建数据库(Mysql)
CREATE DATABASE book DEFAULT CHARACTER SET utf8;
CREATE DATABASE book DEFAULT CHARACTER SET utf8;
- 使用该数据库
use book
- 建表(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
选择DriverManagerDataSource实现,此实现是没有连接池功能
选择dbcp 里面的DataSource实现,这个有连接池功能
选择c3p0里面的DataSource实现,这个有连接池功能
选择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的更多相关文章
- Spring的三种通过XML实现DataSource注入方式
Spring的三种通过XML实现DataSource注入方式: 1.使用Spring自带的DriverManagerDataSource 2.使用DBCP连接池 3.使用Tomcat提供的JNDI
- java后端开发三年!你还不了解Spring 依赖注入,凭什么给你涨薪
前言 前两天和一个同学吃饭的时候同学跟我说了一件事,说他公司有个做了两年的人向他提出要涨薪资,他就顺口问了一个问题关于spring依赖注入的,那个要求涨薪的同学居然被问懵了...事后回家想了想这一块确 ...
- Spring 依赖注入方式详解
平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想,即依赖类不由 ...
- Spring的注入问题
作下笔记,Spring的注入问题[多个实例问题] 解决方案如下: package student.life.support.platform.service.impl; import javax.an ...
- Spring依赖注入 --- 简单使用说明
Spring依赖注入 --- 简单使用说明 本文将对spring依赖注入的使用做简单的说明,enjoy your time! 1.使用Spring提供的依赖注入 对spring依赖注入的实现方法感兴趣 ...
- Spring依赖注入 --- 模拟实现
Spring依赖注入 --- 模拟实现 面向接口编程,又称面向抽象编程, 数据库如果发生更改,对应的数据访问层也应该改变多写几个实现,需要用谁的时候在service里new谁就可以了面向抽象编程的好处 ...
- 模拟Spring依赖注入
通过读取xml文件,利用反射动态加载类和方法,其实就是spring的注入机制模拟,可以清晰的看出整个运行流程 1.配置文件 applicationContext.xml <beans> & ...
- Spring、Spring依赖注入与编码剖析Spring依赖注入的原理
Spring依赖注入 新建PersonIDao 和PersonDao底实现Save方法: public interface PersonIDao { public void save(); } pub ...
- Spring依赖注入原理
接触过spring 的同学应该都知道依赖注入,依赖注入又称控制反转,其内涵就是,将创建某个bean的控制权力,由原来需要引用这个bean的bean转移(反转)到外部的spring IOC容器,由IOC ...
随机推荐
- Python-装饰器的进阶 小知识点
⼀. 通⽤装饰器的回顾 开闭原则: 对增加功能开放. 对修改代码封闭 装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能 通⽤装饰器的写法: def wrapper(fn): def inne ...
- 理解EntityFramework两个核心类型的职责 DbSet和D'bContext
DbSet与DbContext是多对一的关系DbSet是实体对象的集合,提供了实现CRUD的相应方法DbContext封装与数据库和数据模型相关的功能,依据数据实体状态创建SQL命令,将数据更改保存到 ...
- BiLSTM介绍
https://www.jiqizhixin.com/articles/2018-10-24-13 (机器之心)
- Grep的过滤使用
grep的过滤使用 已知文件test里有以下内容 [root@yangwenbo /]# cat test yuni yunwei YUNWEI YWEI yunjijsuan yunsuan YUN ...
- rest framework之视图组件
一.APIView APIView继承的是和django中CBV模式下的View类.View类中的dispatch方法通过反射对不同的请求方法执行不同的函数.而APIView不仅拥有这个特性,而且重 ...
- 【记坑】Oracle数据库Date类型查询结果多出".0"的解决方法
oracle设置数据库某张表的字段类型为date,数据库存值为 2019-11-25 18:51:47 格式,但是从数据库查询出来之后格式为 String stopTime = map.get(&qu ...
- 批量修改root密码
公司有五十多台服务器.每台服务器中使用的密码完全不同,同时操作系统也不一样,centos5,6,7 .ubuntu,windows都有,更不用提其中各种小版本. root密码定期更改是一个大问题(wi ...
- java程序中的多线程(转)
为什么会排队等待? 下面的这个简单的 Java 程序完成四项不相关的任务.这样的程序有单个控制线程,控制在这四个任务之间线性地移动.此外,因为所需的资源 ― 打印机.磁盘.数据库和显示屏 -- 由于硬 ...
- docker的备份和迁移
备份与迁移 容器保存为镜像 我们可以通过以下命令将容器保存为镜像 docker commit pyg_nginx mynginx pyg_nginx是容器名称 mynginx是新的镜像名称 此镜像的内 ...
- Sqli labs系列-less-4 这关好坑!!!
这章,可能我总结开会比较长,图比较多,因为,我在做了一半,走进了一个死胡同,脑子,一下子没想开到底为啥.... 然后我自己想了好长时间也没想开,我也不想直接就去看源码,所以就先去百度了一下,结果一下子 ...