发表于: 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
收获:
知道了如何使用默认连接池对数据库进行增删改查
评论