1.基于aspectj的注解aop操作(会用)
1.1创建对象
1.2在配置文件中打开AOP代理操作
1.3在增强类中使用注解@Aspect
1.4在增强方法上配置不同类型通知
2.Spring的jdbcTemplate
2.1 介绍:
jdbcTemplate就是Spring对jdbc的封装的模板。用于操作数据库。
2.2 新添的jar包
spring-jdbc-4.2.4.RELEASE.jar
spring-tx-4.2.4.RELEASE.jar
mysql-connector-java-5.1.7-bin.jar
2.3 操作步骤:
(1)new DriverManagerDataSource()
(2)new jdbcTemplate()
(3)jdbcTemplate.update();
2.4 初级版本:
2.5 高级版本:
2.6 c3p0版本:
db.properties:
bean.xml:
3.dao使用jdbcTemplate
3.1思路:
创建一个User类,有属性和get、set方法。一个Dao类,用来与数据库直接交互,创建一个jdbcTemplate类型属性。一个service,用于操作Dao类对象,创建一个Dao类型的属性。Test类,用来创建service对象,进行操作。
还有bean.xml
3.2 User.java 省略。。
3.3Dao.java
3.4 Service.java
3.5TestDemo.java
@Test
3.6 bean.xml(src下)
1.1创建对象
<bean id= "user" class="com.edu.nuc.bean.User"></bean>
<bean id= "myUser" class="com.edu.nuc.bean.MyUser"></bean>
1.2在配置文件中打开AOP代理操作
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
1.3在增强类中使用注解@Aspect
@Aspect
public class MyUser {
1.4在增强方法上配置不同类型通知
@Before("execution(* com.edu.nuc.bean.User.test1(..))") //value值给那个类的哪个方法起作用
public void before() {
System.out.println("我是第一个");
}
//环绕增强
@Around("execution(* com.edu.nuc.bean.User.test_2(..))")
public void around(ProceedingJoinPoint p) throws Throwable {
System.out.println("杀人了,有刺客");
p.proceed();
System.out.println("抓住他,就是那个长的很帅的");
}
2.Spring的jdbcTemplate
2.1 介绍:
jdbcTemplate就是Spring对jdbc的封装的模板。用于操作数据库。
2.2 新添的jar包
spring-jdbc-4.2.4.RELEASE.jar
spring-tx-4.2.4.RELEASE.jar
mysql-connector-java-5.1.7-bin.jar
2.3 操作步骤:
(1)new DriverManagerDataSource()
(2)new jdbcTemplate()
(3)jdbcTemplate.update();
2.4 初级版本:
@Test
public void TestAdd() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//创建JdbcTemplate对象,传递数据库信息。
JdbcTemplate template = new JdbcTemplate(dataSource);
//String sql = "insert into t_user values(null,'李星星','123')"; //增加
//String sql = "update t_user set password = '123456' where id =1"; //更新
String sql = "delete from t_user where id = 2"; //删除
int i = template.update(sql);
if(i>0)
System.out.println("成功!!!");
}
查找:
/**
*查找的时候必须创建这个类,将结果封装给bean
*/
class MyRowMapper implements RowMapper<User>{
@Override
public User mapRow(ResultSet res, int arg1) throws SQLException {
int id = res.getInt("id");
String username = res.getString("username");
String password = res.getString("password");
User user = new User(id,username,password);
return user;
}
}
@Test
public void testQuery() {
DriverManagerDataSource source = new DriverManagerDataSource();
source.setDriverClassName("com.mysql.jdbc.Driver");
source.setUrl("jdbc:mysql://localhost:3306/mybatis");
source.setUsername("root");
source.setPassword("123456");
JdbcTemplate template = new JdbcTemplate(source);
String sql = "select * from t_user";
List<User> i = template.query(sql, new MyRowMapper());
System.out.println(i);
}
2.5 高级版本:
@Test
public void TestDemo() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
JdbcTemplate template = context.getBean("jdbcTemplate",JdbcTemplate.class);
String sql = "insert into t_user values(null,'李星星','123')"; //增加
int i = template.update(sql);
if(i>0)
System.out.println("成功!!!");
}
bean.xml:
<!-- 内置连接池 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id = "jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
2.6 c3p0版本:
db.properties:
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis
jdbc.user=root
jdbc.password=123456
bean.xml:
<!-- c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean id = "jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 引入外部文件的第一种方式 引入db.properties-->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:db.properties"></property>
</bean>
<!-- 引入外部文件的第二种方式 -->
<!-- <context:property-placeholder location="db.properties"/> -->
3.dao使用jdbcTemplate
3.1思路:
创建一个User类,有属性和get、set方法。一个Dao类,用来与数据库直接交互,创建一个jdbcTemplate类型属性。一个service,用于操作Dao类对象,创建一个Dao类型的属性。Test类,用来创建service对象,进行操作。
还有bean.xml
3.2 User.java 省略。。
3.3Dao.java
public class Dao {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
//往数据库插入数据
public int insert() {
String sql = "insert into t_user values(null,?,123)";
int i = jdbcTemplate.update(sql,"田馥甄");
return i;
}
}
3.4 Service.java
public class Service {
private Dao dao;
public Dao getDao() {
return dao;
}
public void setDao(Dao dao) {
this.dao = dao;
}
public int insert() {
int i = dao.insert();
return i;
}
}
3.5TestDemo.java
@Test
public void TestInsert() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
Service service = context.getBean("service",Service.class);
int i = service.insert();
if(i>0)
System.out.println("成功!!!");
}
3.6 bean.xml(src下)
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--user类-->
<bean id= "user" class="com.edu.nuc.bean.User"></bean>
<!--dao类型-->
<bean id = "dao" class="com.edu.nuc.dao.Dao">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!--servise对象-->
<bean id = "service" class="com.edu.nuc.service.Service">
<property name="dao" ref="dao"></property>
</bean>
<!-- 引入外部文件的第一种方式 -->
<!-- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:db.properties"></property>
</bean> -->
<!-- 引入外部文件的第二种方式 -->
<context:property-placeholder location="db.properties"/>
<!-- c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!--jdbcTemplate 对象-->
<bean id = "jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--开启AOP-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>