SSM框架学习3-Spring配置数据源
在日常的开发中,我们对于数据库的引用通常是通过数据源创建连接来完成的,这样做效率更高且资源占用率更小,复用率更大。
推荐使用c3p0或者druid的数据连接池,这里以c3p0为例记录,druid的方式相同,只是某些api的内容不同。
目录
1. 引入坐标
2. 创建数据源对象,创建连接
首先是使用.properties的配置文件的方法
通过spring配置文件创建对象的方法
1. 引入坐标
我们要使用c3p0的连接池,以及jdbc首先得导入依赖,配置坐标:
mysql mysql-connector-java 8.0.25 c3p0 c3p0 0.9.1.2
注意这里的mysql-connector-java得版本需要与当前所连接得数据库的版本对应,我的是8.0.25。
配置好后,刷新依赖成功导入。
2. 创建数据源对象,创建连接
使用c3p0时,当我们不在spring配置文件中创建对象,而是手动创建时,我们需要条用c3p0提供的类创建以及连接的代码如下:
@Test //测试手动创建c3p0 public void test1() throws PropertyVetoException, SQLException { ComboPooledDataSource dataSource=new ComboPooledDataSource();//从连接池实例一个数据源 dataSource.setDriverClass("com.mysql.jdbc.Driver");//设置驱动 dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/coms?useUnicode=true&characterEncoding=utf-8");//设置数据库连接 dataSource.setUser("root");//要连接的用户名 dataSource.setPassword("xxxxxx");//设置密码 //到这里数据源已经配置好,我们要使用数据时就创建一个连接如下,用完连接后关闭连接,实现节约资源 Connection connection=dataSource.getConnection(); System.out.println(connection); connection.close(); }
这里我们发现,我们数据库的相关配置与代码高度耦合,需要解耦处理,因此有两种方式课供选择,第一种就是写一个.properties的配置文件,将各个量定义在此配置文件中,完成解耦,第二种方法是使用spring配置文件的bean来构建dataSource对象,观察手动创建过程可以发现,他是一种无参构造,且采用setter方式给变量赋值,因此我们可以对此进行依赖注入。
首先是使用.properties的配置文件的方法
配置文件如图:
然后是导入配置文件,引用变量:
@Test //测试手动创建c3p0数据源(加载properties配置文件) public void test2() throws PropertyVetoException, SQLException { //读取配置文件 ResourceBundle rb=ResourceBundle.getBundle("jdbc"); String driver=rb.getString("jdbc.driver"); String url=rb.getString("jdbc.url"); String username=rb.getString("jdbc.username"); String password=rb.getString("jdbc.password"); ComboPooledDataSource dataSource=new ComboPooledDataSource();//从连接池实例一个数据源 dataSource.setDriverClass(driver);//设置驱动 dataSource.setJdbcUrl(url);//设置数据库连接 dataSource.setUser(username);//要连接的用户名 dataSource.setPassword(password);//设置密码 //到这里数据源已经配置好,我们要使用数据时就创建一个连接如下,用完连接后关闭连接,实现节约资源 Connection connection=dataSource.getConnection(); System.out.println(connection); connection.close(); }
我们的配置文件需放在标准的resource文件夹下,这样在用上面的getBundle的方法才可以引入这个配置文件,传入值不需要加后缀。
通过spring配置文件创建对象的方法
首先我们需要在applicationContext.xml文件中编写依赖注入的bean
注意这里的name应该是我们set构造后面的部分将首字母小写
仔细看这规律,然后记住,然后value值就是我们自己填入,这里的属于解耦状态,因为xml文件同属于配置文件,我们可以在xml文件修改内容,从而完成不同数据库的连接。
通过properties文件继续解耦
在配置文件中:
导入一个jdbc的properties,然后bean里的注入可以如下:
测试效果一样。
注:
1.我们的url的内容可以看到是jdbc:mysql://localhost:3306/coms?useUnicode=true&characterEncoding=utf-8
这一串的意思是:
useUnicode=true 允许用户自己设定数据库编码
characterEncoding=utf-8 字符集设定为utf-8,这样可以防止乱码,避免报错
因为有时候报错了,在检查了各个值发现没问题,逻辑结构都没问题时,可以检查是否是编码乱了。
2.我们这里使用的是单元测试跑代码,可以百度一下单元测试的坐标配置和使用方法。