記事のディレクトリ
1. AspectJのコメントAOPに基づいて(使用されます)
- bean.xml内のオブジェクトを作成します。
- でAOP bean.xml開操作
画像挿入は、本明細書に記載しました - クラス以上のAOP強化されたアノテーションを使用します。@Aspectを
- 強化型の構成増強の上記方法において:@Before(値=「エントリポイント」)などを
-例えば:
jdbcTemplateの操作を2.Spring
2.1スプリングフレームストップフレーム
用途:JavaEEの三層のためのバネは、それぞれの層は、技術を解決しなければなりません。DAO層、jdbcTemplateクラスのために。
達成:異なる技術のための春の永続化層は、カプセル化
2.2 jdbcTemplate
JDBCの事実がカプセル化され、そしてjdbcTemplateのdbutilsの使用は非常に似て使用し、すべてのデータベース操作は、CRUD。
(0)リーダーパケット:インポートjdbcTemplateジャー使用パッケージならびにデータベース駆動型パッケージ
実際に、以下の追加および削除を確認し、オブジェクトコンフィギュレーションファイルを作成するように改変することができる実現されます。
(1)
データベース情報を設定し、データソースオブジェクトの作成
データソースを設定jdbcTemplateがオブジェクトを作成するために、
jdbcTemplateの内部オブジェクトを呼び出すためにupdate(sql,args..)
動作を実現する方法
更新方法が使用され、変更、削除、追加することを。
(2)削除
(3)変化
(4)チェック:
後の2つの場合は、データのカプセル化RowMapperのための独自のクラスが実装するインタフェースを記述する必要のある次の3つの場合を含みます
- 第一种 查询返回某一个值
- 第二种 查询返回对象
- 第三种 查询返回list集合
实现类MyRowMapper :
用于从结果集获取数据
class MyRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int num) throws SQLException {
// 1 从结果集里面把数据得到
String username = rs.getString("username");
String password = rs.getString("password");
// 2 把得到数据封装到对象里面
User user = new User();
user.setUsername(username);
user.setPassword(password);
return user;
}
}
附:jdbc实现代码:
//2 jdbc实现代码
@Test
public void testJDBC() {
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
//加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
//创建连接
conn = DriverManager.getConnection("jdbc:mysql:///spring_day03", "root", "root");
//编写sql语句
String sql = "select * from user where username=?";
//预编译sql
psmt = conn.prepareStatement(sql);
//设置参数值
psmt.setString(1, "lucy");
//执行sql
rs = psmt.executeQuery();
//遍历结果集
while(rs.next()) {
//得到返回结果值
String username = rs.getString("username");
String password = rs.getString("password");
//放到user对象里面
User user = new User();
user.setUsername(username);
user.setPassword(password);
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
psmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.3 Spring配置连接池
(1)导入jar包:
(2)创建spring配置文件,配置连接池
原理:
配置实现:
2.4 dao使用jdbcTemplate
功能:在数据库中插入数据
思路:基于xml配置所有对象,包括dataSource对象(配置数据库连接参数)、jdbcTemplate对象(用于和数据库交互,需要dataSource)、dao对象(提供具体操作,需要jdbcTemplate)、service对象(调用dao对象的操作,需要dao)
步骤:
配置c3p0连接池dataSource
配置jdbcTemplate对象,把dataSource注入到jdbcTemplate里面
配置dao对象,把jdbcTemplate注入到dao里面
配置service对象,把dao对象注入到service里面
<!-- 配置c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 注入属性值 -->
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///spring_day03"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!-- 创建jdbcTemplate对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 把dataSource传递到模板对象里面 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 创建service和dao对象,在service注入dao对象 -->
<bean id="userService" class="cn.itcast.c3p0.UserService">
<!-- 注入dao对象 -->
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userDao" class="cn.itcast.c3p0.UserDao">
<!-- 注入jdbcTemplate对象 -->
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
3. Spring的事务管理
(1)声明式事务管理(XML)
配置文件方式使用aop思想配置
- 配置数据库事务管理器:需要数据库参数
- 配置事务增强:指定切入点方法的匹配规则
- 配置切面:指定增强用于哪个切入点
(2)声明式事务管理(注解)
- 配置数据库事务管理器:需要数据库参数
- 开启事务注解:指定事务管理器
- 事务方法所在的类上方添加注解@Transaction