spring实现service和dao的数据的查找
- dao层设置接口
- 实现dao层的接口
- service设置接口
- 通过注入dao层,来实现接口
//dao层的接口,定义了根据id查询的方法
public interface Accountdao {
Account findByid(int id);
}
实现接口:实现了查询的方法
package com.kfm.spring.dao;
import com.kfm.spring.model.Account;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.SQLException;
/**
* @author jkk
*/
public class IAccountdao implements Accountdao{
private QueryRunner queryRunner;
public void setQueryRunner(QueryRunner queryRunner){
this.queryRunner = queryRunner;
}
@Override
public Account findByid(int id) {
String sql = "select * from account where id = ?";
try {
Account account = queryRunner.query(sql,new BeanHandler<>(Account.class),id);
return account;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
设置service层的接口
public interface AccountService {
Account findByid(int id);
}
实现接口:业务层利用dao层大的对象调用dao层中的方法
package com.kfm.spring.service;
import com.kfm.spring.dao.Accountdao;
import com.kfm.spring.model.Account;
/**
* @author jkk
*/
public class IAccountService implements AccountService{
private Accountdao accountdao;
public void setAccountdao(Accountdao accountdao){
this.accountdao = accountdao;
}
@Override
public Account findByid(int id) {
return accountdao.findByid(id);
}
}
利用.xml配置文件来实现:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="accountservice" class="com.kfm.spring.service.IAccountService">
<property name="accountdao" ref="accountdao"></property>
</bean>
<bean id="accountdao" class="com.kfm.spring.dao.IAccountdao">
<property name="queryRunner" ref="queryRunner"></property>
</bean>
<bean id="queryRunner" class="org.apache.commons.dbutils.QueryRunner">
<constructor-arg name="ds" ref="datasource"></constructor-arg>
</bean>
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/web"></property>
<property name="user" value="root"></property>
<property name="password" value=""></property>
</bean>
</beans>
对上面的xml进行分析
在第一个 bean 的定义中,它依赖于第二个 bean,因为它的属性 “accountdao” 的值是 “accountdao” bean 的引用。这意味着在运行时,Spring Framework 会自动将 “accountdao” bean 注入到 “accountservice” bean 中,以便 “accountservice” bean 可以使用 “accountdao” bean 提供的功能。
【注意】此处的注入是利用seter方法来实现的,因此
可以写seter方法,确保可以注入值