Spring的Dao模块式Spring框架中对应持久层的解决方式,提供了对JDBC、Hibernate、JDO等DAO层支持。
Spring框架对JDBC进行了封装,完全抛弃了JDBC API。数据库连接、事务等也交给了Spring打点,开发者只需要使用封装好的JdbcTemplate执行SQL语句,然后得到需要的结果。
需要的包:
项目目录:
User.java
public class User implements Serializable{
private int uId; //用户的id
private String uName; //用户名
private String uPassword; //密码
public User() {
}
public User(int uId, String uName, String uPassword) {
this.uId = uId;
this.uName = uName;
this.uPassword = uPassword;
}
public int getuId() {
return uId;
}
public void setuId(int uId) {
this.uId = uId;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public String getuPassword() {
return uPassword;
}
public void setuPassword(String uPassword) {
this.uPassword = uPassword;
}
@Override
public String toString() {
return "User [uId=" + uId + ", uName=" + uName + ", uPassword="
+ uPassword + "]";
}
}
IUserDao.java
public interface IUserDao {
/**
* 保存用户数据
* @param user
* @throws Exception
*/
public void save(User user) throws Exception;
/**
* 删除数据
* @param user
*/
public void delete(User user)throws Exception;
/**
* 修改数据
* @param user
*/
public void update(User user)throws Exception;
/**
* 查询数据
* @param user
*/
public void query(User user)throws Exception;
}
UserDao.java
public class UserDao implements IUserDao{
//下面这个就是访问数据库的对象
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public void save(User user) throws Exception{
String sql="insert into t_user(uName,uPassword) values(?,?)";
jdbcTemplate.update(sql,user.getuName(),user.getuPassword());
}
@Override
public void delete(User user) throws Exception{
String sql="delete from t_user where uId=?";
jdbcTemplate.update(sql,user.getuId());
}
@Override
public void update(User user) throws Exception{
String sql="update t_user set uName=?,uPassword=? where uId=?";
jdbcTemplate.update(sql,user.getuName(),user.getuPassword(),user.getuId());
}
@Override
public void query(User user) throws Exception{
String sql="select * from t_user";
List<User> users=jdbcTemplate.query(sql,new RowMapper<User>(){
@Override
public User mapRow(ResultSet set, int number) throws SQLException {
int uId=set.getInt("uId");
String uName=set.getString("uName");
String uPassword=set.getString("uPassword");
return new User(uId, uName, uPassword);
}
});
System.out.println("数据是:"+users);
}
}
IUserService.java
public interface IUserService {
/**
* 保存用户数据
* @param user
* @throws Exception
*/
public void save(User user) throws Exception;
/**
* 删除数据
* @param user
*/
public void delete(User user)throws Exception;
/**
* 修改数据
* @param user
*/
public void update(User user)throws Exception;
/**
* 查询数据
* @param user
*/
public void query(User user)throws Exception;
}
UserService.java
public class UserService implements IUserService{
private IUserDao userDao=null;
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
@Override
public void save(User user) throws Exception {
if("".equals(user.getuName())||"".equals(user.getuPassword())){
throw new RuntimeException("参数有问题...");
}
userDao.save(user);
}
@Override
public void delete(User user) throws Exception{
if(user.getuId()<=0){
throw new RuntimeException("参数有误....");
}
userDao.delete(user);
}
@Override
public void update(User user) throws Exception{
if(user.getuId()<=0){
throw new RuntimeException("参数有误....");
}
userDao.update(user);
}
@Override
public void query(User user) throws Exception {
userDao.query(user);
}
}
bean.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--配置我们的数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="acquireIncrement" value="2"></property>
<property name="maxPoolSize" value="100"></property>
<property name="minPoolSize" value="2"></property>
<property name="maxStatements" value="100"></property>
<!--连接数据库的信息-->
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///test01"></property>
<property name="user" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<!--dao -->
<bean id="userDao" class="com.wc.jdbc.dao.impl.UserDao"
p:jdbcTemplate-ref="jdbcTemplate"></bean>
<!--Service -->
<bean id="userService" class="com.wc.jdbc.service.impl.UserService"
p:userDao-ref="userDao"></bean>
<!--配置访问数据库的类 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
下一章:Spring七大模块之DAO (下) 会讲到事务。