Spring学习笔记_2

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>


猜你喜欢

转载自blog.csdn.net/qq_32539825/article/details/81046188