发表于: 2018-09-17 20:34:44

1 327


今天完成的事情:

今天主要是用jdbc默认的连接池使用jdbcTemplate对数据库进行增删改查

代码如下

首先配置applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
   <!--配置默认连接池-->
   <context:property-placeholder location="db.properties"/>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${driverClass}"/>
        <property name="url" value="${jdbcUrl}"/>
        <property name="username" value="${user}"/>
        <property name="password" value="${password}"/>
    </bean>

   <!--定义jdbcTemplate-->
   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
       <property name="dataSource" ref="dataSource"/>
   </bean>
   <bean id="userDAO" class="Spring_jdbc.UserDAOImpl">
       <property name="jdbcTemplate" ref="jdbcTemplate"/>
   </bean>

</beans>

这里引入了dbproperties

driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/user?useSSL=false&useUnicode=true&characterEncoding=UTF-8
user=root
password=123456

之后是设置User对象类

package Spring_jdbc;

public class User {
private int id;
   private String name;
   private String email;

   public int getId() {
return id;
   }

public void setId(int id) {
this.id = id;
   }

public String getName() {
return name;
   }

public void setName(String name) {
this.name = name;
   }

public String getEmail() {
return email;
   
public void setEmail(String email) {
this.email = email;
   
@Override
   public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
   }
}

这里遇见一个坑,之前查询语句之后出现的是一串数字,不是文字,这里是因为没有使用toString

之后是写接口

public interface UserDAO {
public void addUser(User user);
   public void delateUser(int id);
   public void updateUser(User user);
   public String queryById(int id);
   public User queryAllById(int id);
   public List<User> findAll();
}

之后是接口实现类

public class UserDAOImpl extends JdbcDaoSupport implements UserDAO {
ApplicationContext apx = null;
   UserDAO dao=null;

   public void UserDAOSpringImpl(){
apx=new ClassPathXmlApplicationContext("applicationContext.xml");
       dao=(UserDAO) apx.getBean("userDAO");
   }
public void addUser(User user) {
String sql = "insert into demo values(?,?,?)";
       this.getJdbcTemplate().update(sql, user.getId(), user.getName(), user.getEmail());
   }

public void delateUser(int id) {
String sql = "delete from demo where id =?";
       this.getJdbcTemplate().update(sql, id);
   }

public void updateUser(User user) {
String sql = "update demo set name=?,email=? where id=?";
       this.getJdbcTemplate().update(sql, user.getName(), user.getEmail(), user.getId());
   }

public String queryById(int id) {
String sql = "select name from demo where id=?";
       return this.getJdbcTemplate().queryForObject(sql, String.class, id);
   }

public User queryAllById(int id) {
String sql = "select * from demo where id=?";
       return this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(),id);
   }

public List<User> findAll() {
String sql = "select * from demo";
       return this.getJdbcTemplate().query(sql, new UserRowMapper());
   }
}

使用的是增删改查的测试

@Test
public void addTest(){
User user=new User();
   user.setId(4);
   user.setName("赵四");
   user.setEmail("rr@rr");
   ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext.xml");
   UserDAO dao=(UserDAO) apx.getBean("userDAO");
   dao.addUser(user);
}
@Test
public void deleteTest(){
ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext.xml");
   UserDAO dao=(UserDAO) apx.getBean("userDAO");
   dao.delateUser(4);
}
@Test
public void updateTest(){
User user=new User();
   user.setId(4);
   user.setName("熊大");
   user.setEmail("tt@tt");
   ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext.xml");
   UserDAO dao=(UserDAO) apx.getBean("userDAO");
   dao.updateUser(user);
}
@Test
public void queryByIdTest(){
ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext.xml");
   UserDAO dao=(UserDAO) apx.getBean("userDAO");
   String name=dao.queryById(2);
   System.out.println(name);
}
@Test
public void queryALlById(){
ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext.xml");
   UserDAO dao=(UserDAO) apx.getBean("userDAO");
   User user=dao.queryAllById(2);
   System.out.println(user);
}
@Test
public void findAll(){
ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext.xml");
   UserDAO dao=(UserDAO) apx.getBean("userDAO");
   List<User> users=dao.findAll();
   System.out.println(users);

}

这里代码重复了

ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext.xml");
UserDAO dao=(UserDAO) apx.getBean("userDAO");

之前看教程是使用DAOFactory

不过DAOFactory实现有问题

明天计划的事情:

使用dbcp和c3p0连接池

遇到的问题: 

不会使用DAOFactory
收获:

知道了如何使用默认连接池对数据库进行增删改查


返回列表 返回列表
评论

    分享到