1、简单粗暴,直接在类中创建连接池使用

 1 package com.xiaostudy;
 2 
 3 import org.apache.commons.dbcp.BasicDataSource;
 4 import org.springframework.jdbc.core.JdbcTemplate;
 5 
 6 /**
 7  * @desc 测试类
 8  * 
 9  * @author xiaostudy
10  *
11  */
12 public class Test {
13 
14     public static void main(String[] args) {
15         //创建连接池
16         BasicDataSource dataSource = new BasicDataSource();
17         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
18         dataSource.setUrl("jdbc:mysql://localhost:3306/user");
19         dataSource.setUsername("root");
20         dataSource.setPassword("123456");
21         //创建模板
22         /*JdbcTemplate jdbcTemplate = new JdbcTemplate();
23         jdbcTemplate.setDataSource(dataSource);*/
24         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
25         
26         //添加
27         jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", "xiaostudy", "123456");
28         //修改
29         jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", "xiaostudy", "123456", "2");
30         //删除
31         jdbcTemplate.update("delete from spring_user where name=? and password=?;", "xiaostudy", "123456");
32         
33     }
34 
35 }

 


 

2、较第一种,就是把业务分开

2.1、domain类User.java

 1 package com.xiaostudy;
 2 
 3 /**
 4  * @desc domain类
 5  * @author xiaostudy
 6  *
 7  */
 8 public class User {
 9 
10     private Integer id;
11     private String name;
12     private String password;
13 
14     public Integer getId() {
15         return id;
16     }
17 
18     public void setId(Integer id) {
19         this.id = id;
20     }
21 
22     public String getName() {
23         return name;
24     }
25 
26     public void setName(String name) {
27         this.name = name;
28     }
29 
30     public String getPassword() {
31         return password;
32     }
33 
34     public void setPassword(String password) {
35         this.password = password;
36     }
37 
38     @Override
39     public String toString() {
40         return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
41     }
42 
43 }

2.2、dao类UserDao.java

 1 package com.xiaostudy;
 2 
 3 import org.apache.commons.dbcp.BasicDataSource;
 4 import org.springframework.jdbc.core.JdbcTemplate;
 5 
 6 
 7 /**
 8  * @desc Dao类
 9  * @author xiaostudy
10  *
11  */
12 public class UserDao {
13 
14     /**
15      * @desc 获取模板的方法
16      * @return JdbcTemplate 返回类型
17      */
18     public JdbcTemplate getJdbcTemplate() {
19         // 创建连接池
20         BasicDataSource dataSource = new BasicDataSource();
21         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
22         dataSource.setUrl("jdbc:mysql://localhost:3306/user");
23         dataSource.setUsername("root");
24         dataSource.setPassword("123456");
25 
26         // 创建模板
27         JdbcTemplate jdbcTemplate = new JdbcTemplate();
28         jdbcTemplate.setDataSource(dataSource);
29         return jdbcTemplate;
30     }
31 
32     /**
33      * @desc 添加用户
34      * @param user 参数
35      * @return int 返回类型
36      */
37     public int insertUser(User user) {
38         JdbcTemplate jdbcTemplate = getJdbcTemplate();
39         return jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", user.getName(),
40                 user.getPassword());
41     }
42 
43     /**
44      * @desc 修改用户
45      * @param user 参数
46      * @param id   参数
47      * @return int 返回类型
48      */
49     public int updateUser(User user, int id) {
50         JdbcTemplate jdbcTemplate = getJdbcTemplate();
51         return jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", user.getName(),
52                 user.getPassword(), id);
53     }
54 
55     /**
56      * @desc 删除用户
57      * @param user 参数
58      * @return int 返回类型
59      */
60     public int deleteUser(User user) {
61         JdbcTemplate jdbcTemplate = getJdbcTemplate();
62         return jdbcTemplate.update("delete from spring_user where name=? and password=?;", user.getName(),
63                 user.getPassword());
64     }
65 }

2.3、测试类Test.java

 1 package com.xiaostudy;
 2 
 3 /**
 4  * @desc 测试类
 5  * @author xiaostudy
 6  *
 7  */
 8 public class Test {
 9 
10     public static void main(String[] args) {
11         User user = new User();
12         user.setName("xiaostudy");
13         user.setPassword("123456");
14         UserDao userDao = new UserDao();
15         // userDao.insertUser(user);
16         // userDao.updateUser(user, 1);
17         userDao.deleteUser(user);
18 
19     }
20 
21 }

 

3、较第二种,接入spring中

3.1、domain类User.java

 1 package com.xiaostudy;
 2 
 3 /**
 4  * @desc damain类
 5  * @author xiaostudy
 6  *
 7  */
 8 public class User {
 9 
10     private Integer id;
11     private String name;
12     private String password;
13 
14     public Integer getId() {
15         return id;
16     }
17 
18     public void setId(Integer id) {
19         this.id = id;
20     }
21 
22     public String getName() {
23         return name;
24     }
25 
26     public void setName(String name) {
27         this.name = name;
28     }
29 
30     public String getPassword() {
31         return password;
32     }
33 
34     public void setPassword(String password) {
35         this.password = password;
36     }
37 
38     @Override
39     public String toString() {
40         return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
41     }
42 
43 }

3.2、dao类UserDao.java

 1 package com.xiaostudy;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 import org.springframework.jdbc.core.JdbcTemplate;
 6 
 7 /**
 8  * @desc dao类
 9  * @author xiaostudy
10  *
11  */
12 public class UserDao {
13     
14     /**
15      * @desc 获取模板的方法
16      * @return JdbcTemplate 返回类型
17      */
18     public JdbcTemplate getJdbcTemplate() {
19         //从spring容器中获取连接池对象
20         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
21         return applicationContext.getBean("jdbcTemplate", JdbcTemplate.class);
22     }
23     
24     /**
25      * @desc 添加用户
26      * @param user 参数
27      * @return int 返回类型
28      */
29     public int insertUser(User user) {
30         JdbcTemplate jdbcTemplate = getJdbcTemplate();
31         return jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", user.getName(), user.getPassword());
32     }
33     
34     /**
35      * @desc 修改用户
36      * @param user 参数
37      * @param id 参数
38      * @return int 返回类型
39      */
40     public int updateUser(User user, int id) {
41         JdbcTemplate jdbcTemplate = getJdbcTemplate();
42         return jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", user.getName(), user.getPassword(), id);
43     }
44     
45     /**
46      * @desc 删除用户
47      * @param user 参数
48      * @return int 返回类型
49      */
50     public int deleteUser(User user) {
51         JdbcTemplate jdbcTemplate = getJdbcTemplate();
52         return jdbcTemplate.update("delete from spring_user where name=? and password=?;", user.getName(), user.getPassword());
53     }
54 }

3.3、spring配置文件applicationContext.xml

 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        xmlns:aop="http://www.springframework.org/schema/aop"
 5        xmlns:context="http://www.springframework.org/schema/context"
 6        xsi:schemaLocation="http://www.springframework.org/schema/beans 
 7                               http://www.springframework.org/schema/beans/spring-beans.xsd
 8                               http://www.springframework.org/schema/aop 
 9                               http://www.springframework.org/schema/aop/spring-aop.xsd
10                               http://www.springframework.org/schema/context 
11                               http://www.springframework.org/schema/context/spring-context.xsd">
12     <!-- 将domain类添加到容器中 -->
13     <bean id="user" class="com.xiaostudy.User"></bean>
14     <!-- 将dao类添加到容器中 -->
15     <bean id="userDao" class="com.xiaostudy.UserDao"></bean>
16     <!-- 将连接池添加到容器中 -->
17     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
18         <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
19         <property name="url" value="jdbc:mysql://localhost:3306/user"></property>
20         <property name="username" value="root"></property>
21         <property name="password" value="123456"></property>
22     </bean>
23     <!-- 将模板添加到容器中 -->
24     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
25         <property name="dataSource" ref="dataSource"></property>
26     </bean>
27 </beans>

3.4、测试类Test.java

 1 package com.xiaostudy;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 /**
 7  * @desc 测试类
 8  * @author xiaostudy
 9  *
10  */
11 public class Test {
12 
13     public static void main(String[] args) {
14         //获取spring容器
15         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
16         //从容器中获取domain对象
17         User user = applicationContext.getBean("user", User.class);
18         user.setName("huangwu");
19         user.setPassword("123456");
20         //从容器中获取dao对象
21         UserDao userDao = applicationContext.getBean("userDao", UserDao.class);
22         //userDao.insertUser(user);
23         userDao.updateUser(user, 2);
24         //userDao.deleteUser(user);
25         
26     }
27 
28 }

 

4、较第三种,把在spring配置文件中的连接池信息提取到一个配置文件中

4.1、domain类User.java

 1 package com.xiaostudy;
 2 
 3 /**
 4  * @domain类
 5  * @author xiaostudy
 6  *
 7  */
 8 public class User {
 9 
10     private Integer id;
11     private String name;
12     private String password;
13 
14     public Integer getId() {
15         return id;
16     }
17 
18     public void setId(Integer id) {
19         this.id = id;
20     }
21 
22     public String getName() {
23         return name;
24     }
25 
26     public void setName(String name) {
27         this.name = name;
28     }
29 
30     public String getPassword() {
31         return password;
32     }
33 
34     public void setPassword(String password) {
35         this.password = password;
36     }
37 
38     @Override
39     public String toString() {
40         return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
41     }
42 
43 }

4.2、dao类UserDao.java

 1 package com.xiaostudy;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 import org.springframework.jdbc.core.JdbcTemplate;
 6 
 7 /**
 8  * @desc dao类
 9  * @author xiaostudy
10  *
11  */
12 public class UserDao {
13     
14     /**
15      * @desc 获取模板的方法
16      * @return JdbcTemplate 返回类型
17      */
18     public JdbcTemplate getJdbcTemplate() {
19         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
20         return applicationContext.getBean("jdbcTemplate", JdbcTemplate.class);
21     }
22     
23     /**
24      * @desc 添加用户
25      * @param user 参数
26      * @return int 返回类型
27      */
28     public int insertUser(User user) {
29         JdbcTemplate jdbcTemplate = getJdbcTemplate();
30         return jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", user.getName(), user.getPassword());
31     }
32     
33     /**
34      * @desc 修改用户
35      * @param user 参数
36      * @param id 参数
37      * @return int 返回类型
38      */
39     public int updateUser(User user, int id) {
40         JdbcTemplate jdbcTemplate = getJdbcTemplate();
41         return jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", user.getName(), user.getPassword(), id);
42     }
43     
44     /**
45      * @desc 删除用户
46      * @param user 参数
47      * @return int 返回类型
48      */
49     public int deleteUser(User user) {
50         JdbcTemplate jdbcTemplate = getJdbcTemplate();
51         return jdbcTemplate.update("delete from spring_user where name=? and password=?;", user.getName(), user.getPassword());
52     }
53 }

4.3、连接池的配置文件dataSource.properties

1 jdbc.driverClassName=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/user
3 jdbc.username=root
4 jdbc.password=123456

4.4、spring配置文件applicationContext.xml

 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        xmlns:aop="http://www.springframework.org/schema/aop"
 5        xmlns:context="http://www.springframework.org/schema/context"
 6        xsi:schemaLocation="http://www.springframework.org/schema/beans 
 7                               http://www.springframework.org/schema/beans/spring-beans.xsd
 8                               http://www.springframework.org/schema/aop 
 9                               http://www.springframework.org/schema/aop/spring-aop.xsd
10                               http://www.springframework.org/schema/context 
11                               http://www.springframework.org/schema/context/spring-context.xsd">
12     <!-- 将domain类添加到容器中 -->
13     <bean id="user" class="com.xiaostudy.User"></bean>
14     <!-- 将dao类添加到容器中 -->
15     <bean id="userDao" class="com.xiaostudy.UserDao"></bean>
16     <!-- 将连接池的配置文件添加到容器中 -->
17     <context:property-placeholder location="classpath:dataSource.properties"/>
18     <!-- 将连接池添加到容器中 -->
19     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
20         <property name="driverClassName" value="${jdbc.driverClassName}"></property>
21         <property name="url" value="${jdbc.url}"></property>
22         <property name="username" value="${jdbc.username}"></property>
23         <property name="password" value="${jdbc.password}"></property>
24     </bean>
25     <!-- 将模板添加到容器中 -->
26     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
27         <property name="dataSource" ref="dataSource"></property>
28     </bean>
29 </beans>

4.5、测试类Test.java

 1 package com.xiaostudy;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 /**
 7  * @desc 测试类
 8  * 
 9  * @author xiaostudy
10  *
11  */
12 public class Test {
13 
14     public static void main(String[] args) {
15         //获取spring容器
16         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
17         //从容器中获取domain对象
18         User user = applicationContext.getBean("user", User.class);
19         user.setName("lisi");
20         user.setPassword("123456");
21         //从容器中获取dao对象
22         UserDao userDao = applicationContext.getBean("userDao", UserDao.class);
23         //userDao.insertUser(user);
24         userDao.updateUser(user, 2);
25         //userDao.deleteUser(user);
26         
27     }
28 
29 }

 

5、较DBCP,用C3P0连接池,需要改变的就是连接池的包要改变,和连接池配置的名称要改


 

6、较第五种,把模板添加到容器改成让dao去添加模板

6.1、domain类User.java

 1 package com.xiaostudy;
 2 
 3 /**
 4  * @desc domain类
 5  * @author xiaostudy
 6  *
 7  */
 8 public class User {
 9 
10     private Integer id;
11     private String name;
12     private String password;
13 
14     public Integer getId() {
15         return id;
16     }
17 
18     public void setId(Integer id) {
19         this.id = id;
20     }
21 
22     public String getName() {
23         return name;
24     }
25 
26     public void setName(String name) {
27         this.name = name;
28     }
29 
30     public String getPassword() {
31         return password;
32     }
33 
34     public void setPassword(String password) {
35         this.password = password;
36     }
37 
38     @Override
39     public String toString() {
40         return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
41     }
42 
43 }

6.2、dao类UserDao.java

 1 package com.xiaostudy;
 2 
 3 import org.springframework.jdbc.core.JdbcTemplate;
 4 import org.springframework.jdbc.core.support.JdbcDaoSupport;
 5 
 6 /**
 7  * @desc dao类
 8  * @author xiaostudy
 9  *
10  */
11 public class UserDao extends JdbcDaoSupport {
12     
13     /**
14      * @desc 添加用户
15      * @param user 参数
16      * @return int 返回类型
17      */
18     public int insertUser(User user) {
19         //从继承的父类中获取模板
20         JdbcTemplate jdbcTemplate = getJdbcTemplate();
21         return jdbcTemplate.update("insert into spring_user(name, password) values(?, ?);", user.getName(), user.getPassword());
22     }
23     
24     /**
25      * @desc 修改用户
26      * @param user 参数
27      * @param id 参数
28      * @return int 返回类型
29      */
30     public int updateUser(User user, int id) {
31         JdbcTemplate jdbcTemplate = getJdbcTemplate();
32         return jdbcTemplate.update("update spring_user set name=?,password=? where id=?;", user.getName(), user.getPassword(), id);
33     }
34     
35     /**
36      * @desc 删除用户
37      * @param user 参数
38      * @return int 返回类型
39      */
40     public int deleteUser(User user) {
41         JdbcTemplate jdbcTemplate = getJdbcTemplate();
42         return jdbcTemplate.update("delete from spring_user where name=? and password=?;", user.getName(), user.getPassword());
43     }
44 }

6.3、连接池的配置文件dataSource.properties

1 jdbc.driverClassName=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/user
3 jdbc.username=root
4 jdbc.password=123456

6.4、spring配置文件applicationContext.xml

 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        xmlns:aop="http://www.springframework.org/schema/aop"
 5        xmlns:context="http://www.springframework.org/schema/context"
 6        xsi:schemaLocation="http://www.springframework.org/schema/beans 
 7                               http://www.springframework.org/schema/beans/spring-beans.xsd
 8                               http://www.springframework.org/schema/aop 
 9                               http://www.springframework.org/schema/aop/spring-aop.xsd
10                               http://www.springframework.org/schema/context 
11                               http://www.springframework.org/schema/context/spring-context.xsd">
12     <!-- 将domain类添加到容器中 -->
13     <bean id="user" class="com.xiaostudy.User"></bean>
14     <!-- 将dao类添加到容器中 -->
15     <bean id="userDao" class="com.xiaostudy.UserDao">
16         <!-- 将连接池给dao,让dao去注入 -->
17         <property name="dataSource" ref="dataSource"></property>
18     </bean>
19     <!-- 将连接池的配置文件添加到容器中 -->
20     <context:property-placeholder location="classpath:dataSource.properties"/>
21     <!-- 将连接池添加到容器中 -->
22     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
23         <property name="driverClass" value="${jdbc.driverClass}"></property>
24         <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
25         <property name="user" value="${jdbc.user}"></property>
26         <property name="password" value="${jdbc.password}"></property>
27     </bean>
28 </beans>

6.5测试类Test.java

 1 package com.xiaostudy;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 /**
 7  * @desc 测试类
 8  * @author xiaostudy
 9  *
10  */
11 public class Test {
12 
13     public static void main(String[] args) {
14         //获取spring容器
15         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
16         //从容器中获取domain对象
17         User user = applicationContext.getBean("user", User.class);
18         user.setName("sssss");
19         user.setPassword("123456");
20         //从容器中获取dao对象
21         UserDao userDao = applicationContext.getBean("userDao", UserDao.class);
22         //userDao.insertUser(user);
23         userDao.updateUser(user, 2);
24         //userDao.deleteUser(user);
25         
26     }
27 
28 }