VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • java入门之java教程之Spring (2)框架(3)

.println(user);

 

}

@Test

public void testList() {

 

List<User> users = service.list();

System.out.println(users);

}

}

ApplicationContext.xml配置

<!-- 引入 db.properties配置文件 -->

<context:property-placeholder location="classpath:db.properties"/>

 

<!-- 配置Druid连接池 : DataSource 数据源 -->

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"

destroy-method="close"

>

<!-- setter方法注入属性值 -->

<property name="driverClassName" value="${jdbc.driverClassName}"/>

<property name="url" value="${jdbc.url}"/>

<property name="username" value="${jdbc.username}"/>

<property name="password" value="${jdbc.password}"/>

<!-- 最大连接数 -->

<property name="maxActive" value="${jdbc.maxActive}"/>

</bean>

 

 

<!-- 配置DAO层 -->

<bean id="userDao" class="cn.zj.spring.dao.impl.UserDaoImpl2">

<!-- setter方法注入数据源:连接池 -->

<property name="dataSource" ref="dataSource"/>

</bean>

 

<!-- 配置Service层 -->

<bean id="userSercice" class="cn.zj.spring.service.impl.UserServiceImpl">

<!-- 注入dao -->

<property name="dao" ref="userDao"/>

</bean>

 

 

6.2. 快速生成一个类有多个测试方法的单元测试类

 

 

 

 

 

6.2.1. JDBCTemplate模板类

 

Spring为各大框架提供对应的模板类可以直接操作数据库

 

 

 

如果使用JDBC就使用JDBCTemplate类(将数据库的基本操作方法已经封装好了,直接调用即可)

 

导入相关jar

mysql-connector-java-5.x.jar:MySQL驱动包

spring-jdbc-5.0.5.RELEASE.jar:支持JDBC

spring-tx-5.0.5.RELEASE.jar: 支持事务

druid1.9.jar 连接池

DAO层代码

// 引入JDBCTemplate 模板类

private JdbcTemplate jdbcTemplate;

 

//使用setter方式注入数据源即可

public void setDataSource(DataSource dataSource) {

this.jdbcTemplate = new JdbcTemplate(dataSource);

}

 

@Override

public void save(User user) {

this.jdbcTemplate.update("insert into t_user (name,email) values (?,?)",

user.getName(),user.getEmail());

}

 

@Override

public void delete(Integer id) {

this.jdbcTemplate.update("delete from t_user where id = ?",id);

 

}

 

@Override

public void update(User user) {

this.jdbcTemplate.update("update t_user set name = ?,email = ? where id = ?",

user.getName(),user.getEmail(),user.getId());

}

 

@Override

public User findById(Integer id) {

String sql = "select * from t_user where id = ?";

User user = this.jdbcTemplate.queryForObject(sql,new Object[] {id}, new RowMapper<User>() {

@Override

public User mapRow(ResultSet rs, int rowNum) throws SQLException {

User user = new User();

user.setName(rs.getString("name"));

user.setEmail(rs.getString("email"));

user.setId(id);

return user;

}

});

return user;

}

 

@Override

public List<User> list() {

String sql = "select * from t_user";

 

List<User> users = this.jdbcTemplate.query(sql,new RowMapper<User>(){

@Override

public User mapRow(ResultSet rs, int rowNum) throws SQLException {

User user = new User();

user.setName(rs.getString("name"));

user.setEmail(rs.getString("email"));

user.setId(rs.getInt("id"));

return user;

}

});

 

return users;

}

 

 

6.2.2. DAOSupport

问题每个DAO层的实现类都写上述同样的代码,100DAO100,代码重复99

Spring考虑到这点:专门为各种持久化操作抽取了 Support父类,开发者自己的到只需要继承对应的Support类即可

 

public class UserDaoImpl implements UserDao {

// 引入JDBCTemplate 模板类

private JdbcTemplate jdbcTemplate;

 

//使用setter方式注入数据源即可

public void setDataSource(DataSource dataSource) {

this.jdbcTemplate = new JdbcTemplate(dataSource);

}

}

 

JdbcDaoSupport类的结构

public abstract class JdbcDaoSupport extends DaoSupport {

 

@Nullable

private JdbcTemplate jdbcTemplate;

 

 

/**

 * Set the JDBC DataSource to be used by this DAO.

 */

public final void setDataSource(DataSource dataSource) {

if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {

this.jdbcTemplate = createJdbcTemplate(dataSource);

initTemplateConfig();

}

}

@Nullable

public final JdbcTemplate getJdbcTemplate() {

  return this.jdbcTemplate;

}

}

让自己的类继承自JdbcDaoSupport类就解决上上述代码重复问题

public class UserDaoImpl2 extends JdbcDaoSupport implements UserDao {}

 

7. 小结

SpringIOCDI 的配置 可以使用XML配置,也可以注解配置

 

今日内容

注解配置

 

  1. 注解配置IOC (控制反正,将对象的创建权交给Spring-重点

(1) @Component 通用IOC 组件,试用任意Spring对象管理

(2) @Controller 主要在表现层使用

(3) @Service 业务层使用

(4) @Repository DAO层使用

(5) 必须在xml中配置包扫描的位置

(6) <context:component-scan base-package=”cn.zj.spring”>

  1. 注解配置ID (依赖注入)注入对象的属性(值,集合,引用)-重点

(1) @Autowired + @Qualifier Spring 框架提供

(2) @Resource JavaEE 官方的规范

  1. Spring纯注解配置-重点

(1) 纯注解配置替代xml配置,但是所有配置依然存在,只是配置方式变换成在类上面贴注解的形式(未来的趋势)--SpringBoot(纯注解)

  1. Spring测试-(理解)

(1) 为了更方便的开发Spring程序

  1. SpringJDBC-(理解)

(1) 优点 :主要能够让Spring自动控制事务

(2) JdbcTemplate 模板类 进行数据表的增删改查

(3) JdbcDaoSupport

① 优点: jdbcTemplate模板类的创建进行封装

② 缺点:只能在xml配置对应DAO

相关教程