发表于: 2017-10-27 22:55:04
2 714
今天学习的内容:
今天用JDBC完成了对数据库的增加,删除和修改。
项目目录结构:
User类:
package jdbcTemplate.bean;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public void UserMod(int id,String username,String password) {
this.id = id;
this.username = username;
this.password = password;
}
}
UsersDao接口:
package jdbcTemplate.implement;
import jdbcTemplate.bean.User
import java.util.List;
public interface UsersDao {
public List<User> getUserById(int id);
public List<User> listALL();
public void add(User User);
public void update(String username,int id);
public void delete(int user);
}
UsersImpl类:
package jdbcTemplate.implement;
import jdbcTemplate.bean.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
public class UsersImpl implements UsersDao{
//Spring提供的JDBCTemolate能直接将数据对象映射成实体类,不需要再获取,ResultSet去获取值/赋值等操作,提高开发效率
private JdbcTemplate template;
public JdbcTemplate getTemplate(){return template;}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.template = jdbcTemplate;
}
public List<User> listALL(){
String sql = "select * from user";
return (List<User>) template.query(sql,new BeanPropertyRowMapper(User.class));
}
public void add(User user) {
String sql = "insert into user(username,password)" +
" value(?,?)";
template.update(sql, user.getUsername(),user.getPassword());
}
public void update(String username,int id){
String sql = "update user set username=? where id = ?";
template.update(sql,username,id);
}
public void delete(int id){
String sql ="delete from user where id =?";
template.update(sql,id);
}
public List<User>getUserById(int id){
String sql = "select * from user where id = ?";
return(List<User>)template.query(sql, new BeanPropertyRowMapper(User.class),id);
}
}
配置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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!--引入外部属性文件↓-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--连接数据库的配置-->
<!--声明bean,,,未将DataSource声明为Bean,则无法使用数据库事务.-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
</bean>
<!--配置jdbcTemplate,并装配DataSource数据源属性 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="usersImpl" class="jdbcTemplate.implement.UsersImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>
jdbc.properties中的代码:
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/test
jdbc.user=root
jdbc.password=123456
测试类AddTest:
import jdbcTemplate.bean.User;
import jdbcTemplate.implement.UsersDao;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AddTest {
ClassPathXmlApplicationContext appConetxt = new ClassPathXmlApplicationContext("applicationContext.xml");
UsersDao usersDao = appConetxt.getBean(UsersDao.class);
@Test//可以看到,该操作不用我们自己再去获取数据库连接信息,而是直接传递sql语句及其参数!
public void testAdd() throws Exception {
User user = new User();
user.setUsername("zhangfei");
user.setPassword("111111");
usersDao.add(user)
}
}
测试类UpdateTest:
import jdbcTemplate.implement.UsersDao;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UpdateTest {
ClassPathXmlApplicationContext appConetxt = new ClassPathXmlApplicationContext("applicationContext.xml");
UsersDao userDAO = appConetxt.getBean(UsersDao.class);
int id = 3;
@Test
public void testUpdate() throws Exception {
userDAO.update("libai",3);}
测试类DeleteTest:
import jdbcTemplate.implement.UsersDao;
import jdbcTemplate.implement.UsersImpl;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DeleteTest {
ClassPathXmlApplicationContext appConetxt = new ClassPathXmlApplicationContext("applicationContext.xml");
//数据源和实现,及bean方法的调用接口
// 可以看到,该操作不用我们自己再去获取数据库连接信息,而是直接传递sql语句及其参数!
UsersDao userDao = appConetxt.getBean(UsersDao.class);
int id = 2900;
@Test
public void testDelete() throws Exception {
userDao.delete(6);
}
}
增加之前的数据库表:
增加之后的数据库表:
删除之前的数据库表:
删除之后的数据库表:
更新之前的数据库表:
更新之后的数据库表:
收获:加深了对DBCTemplate操作数据库这个知识的理解。
问题:刚开始不明白JDBCTemplate的知识,走了很多弯路。
明天继续学习关于JDBCTemplate的知识。
评论