price float(20,2) DEFAULT NULL,
cbs varchar(20) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
– Records of book
INSERT INTO book VALUES (‘1’, ‘Java从入门到精通’, ‘张三’, ‘15.00’, ‘清华大学’);
INSERT INTO book VALUES (‘5’, ‘11’, ‘11’, ‘11.00’, ‘11’);
INSERT INTO book VALUES (‘6’, ‘11’, ‘11’, ‘11.00’, ‘11’);
INSERT INTO book VALUES (‘8’, ‘JavaScript入门’, ‘刘伟’, ‘55.60’, ‘哈哈’);
INSERT INTO book VALUES (‘10’, ‘MySQL从入门到精通’, ‘刘玉徐’, ‘85.00’, ‘???’);
– Table structure for user
DROP TABLE IF EXISTS user;
CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
uname varchar(255) NOT NULL,
upass varchar(255) DEFAULT NULL,
tel varchar(255) NOT NULL,
address varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=124 DEFAULT CHARSET=utf8;
– Records of user
INSERT INTO user VALUES (‘123’, ‘123’, ‘123’, ‘123’, ‘123’);
[](()(4)创建C3P0连接池package com.itbluebox.db;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;
import java.sql.Connection;
public class TestC3P0 {
@Test
public void testC3P0() throws Exception{
//数据源
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//设置数据库连接参数
dataSource.setDriverClass(“com.mysql.jdbc.Driver”);
dataSource.setJdbcUrl(“jdbc:mysql://localhost:3306/test”);
dataSource.setUser(“root”);
dataSource.setPassword(“root”);
//获得连接对象
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
}
运行测试
运行成功
[](()(5)创建Druid连接池package com.itbluebox.db;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import org.junit.Test;
public class TestDruid {
@Test
public void testDruid() throws Exception{
//创建数据库源
DruidDataSource dataSource = new DruidDataSource();
//设置数据库连接参数
dataSource.setDriverClassName(“com.mysql.jdbc.Driver”);
dataSource.setUrl(“jdbc:mysql://localhost:3306/test”);
dataSource.setUsername(“root”);
dataSource.setPassword(“root”);
//获取连接对象
DruidPooledConnection connection = dataSource.getConnection();
System.out.println(connection);
}
}
运行成功
[](()3、数据源的手动创建(读取jdbc.properties) [](()(1)提取jdbc.properties配置文件jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test
jdbc.username = root
jdbc.password = root
[](()(2)读取jdbc.properties配置文件创建连接池package com.itbluebox.db;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;
import java.sql.Connection;
import java.util.ResourceBundle;
public class TestC3P0ByProperties {
@Test
public void C3P0ByProperties() throws Exception{
//加载类路径下的jdbc.properties
ResourceBundle rb = ResourceBundle.getBundle(“jdbc”);
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(rb.getString(“jdbc.driver”));
dataSource.setJdbcUrl(rb.getString(“jdbc.url”));
dataSource.setUser(rb.getString(“jdbc.username”));
dataSource.setPassword(rb.getString(“jdbc.password”));
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
}
[](()4、测试从容器当中获取数据源(applicationContext.xml) [](()(1)创建applicationContext.xmlxmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:p=“http://www.springframework.org/schema/p” xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" package com.itbluebox.db; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; import javax.sql.DataSource; import java.sql.Connection; public class TestC3P0Application { @Test public void TestC3PO() throws Exception{ ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(“applicationContext.xml”); DataSource dataSource = (DataSource)applicationContext.getBean(“dataSource”); Connection connection = dataSource.getConnection(); System.out.println(connection); } } applicationContext.xml加载jdbc.properties配置文件获得连接信息。 首先,需要引入context命名空间和约束路径: 命名空间:xmlns:context="http://www.springframework.org/schema/context" 约束路径: http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:p=“http://www.springframework.org/schema/p” xmlns:context=“http://www.springframework.org/schema/context” xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" 运行测试 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PkEMbMi-1651635195406)(https://img- 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 blog.csdnimg.cn/6e9a5167653c4db5ba58cfa2e50b1b1f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6JOd55uS5a2QaXRibHVlYm94,size_20,color_FFFFFF,t_70,g_se,x_16)] [](()二、Spring注解开发 Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。 注意: 使用注解进行开发时,需要在applicationContext.xml中配置组件扫描, 作用是指定哪个包及其子包下的Bean 在这里我们切换回第一篇文章创建的工程Spring-test-demo xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:p=“http://www.springframework.org/schema/p” xmlns:context=“http://www.springframework.org/schema/context” xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" package com.itbluebox.dao.impl; import com.itbluebox.dao.UserDao; import org.springframework.stereotype.Component; @Component(“userDao”) public class UserDaoImpl implements UserDao { public void save() { System.out.println(“UserDao save method running…”); } } 使用@Compont或@Service标识UserServiceImpl需要Spring进行实例化 使用@Autowired或者@Autowired+@Qulifier或者@Resource进行userDao的注入 package com.itbluebox.service.impl; import com.itbluebox.dao.UserDao; import com.itbluebox.service.UserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service(“userService”) public class UserServiceImpl implements UserService { @Resource(name=“userDao”) private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void save() { System.out.println(“UserServiceImpl save method running…”); userDao.save(); } } package com.itbluebox.web; import com.itbluebox.service.UserService; import org.springframework.context.support.ClassPathXmlApplicationContext; public class UserController { public static void main(String[] args) { ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext(“applicationContext.xml”); UserService userService = app.getBean(UserService.class); userService.save(); } } 运行测试 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”> 4.0.0 com.itbluebox spring-test-demo 1.0.0-SNAPSHOT org.springframework spring-context ${spring.version} c3p0 c3p0 0.9.1.2 com.alibaba druid 1.1.10 mysql mysql-connector-java 5.1.39 junit junit 4.12 test xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:p=“http://www.springframework.org/schema/p” xmlns:context=“http://www.springframework.org/schema/context” xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" package com.itbluebox.dao.impl; import com.itbluebox.dao.UserDao; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component(“userDao”) public class UserDaoImpl implements UserDao { @Value(“注入普通数据”) private String str; @Value(“${jdbc.driver}”) private String driver; public void save() { System.out.println(str); System.out.println(driver); System.out.println(“UserDao save method running…”); } } @Scope(“singleton”) 完善UserServiceImpl package com.itbluebox.service.impl; import com.itbluebox.dao.UserDao; import com.itbluebox.service.UserService; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.annotation.Resource; @Service(“userService”) @Scope(“singleton”) public class UserServiceImpl implements UserService { @Resource(name=“userDao”) private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void save() { System.out.println(“UserServiceImpl save method running…”); userDao.save(); } @PostConstruct public void init(){ 完善UserServiceImpl package com.itbluebox.service.impl; import com.itbluebox.dao.UserDao; import com.itbluebox.service.UserService; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.annotation.Resource; @Service(“userService”) @Scope(“singleton”) public class UserServiceImpl implements UserService { @Resource(name=“userDao”) private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void save() { System.out.println(“UserServiceImpl save method running…”); userDao.save(); } @PostConstruct public void init(){
[](()1、Spring原始注解
[](()(6)使用@Scope标注Bean的范围
or_FFFFFF,t_70,g_se,x_16)



