1.基於aspectj的註解aop操作(會用) 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>