zoukankan      html  css  js  c++  java
  • Spring学习日志四

    一、回顾AOP使用注解

    1.基于注解

    1. 依赖的jar包。
    2. 定义类并把该类标注为切面类。 @Aspect
    3. 再切面类中可以定义若干个方法 @Before @After @AfterReturning @AfterThrowing
    4. 配置文件开启切面注解。

    2.基于xml

     <bean>切面类的bean
    
     <aop:config>
    
         <aop:pointcut expression=”execution()” id=””/>
    
         <aop:aspect  ref=””>
    
             <aop:after point-ref=”” method=””>
    
         </aop:aspect>
    
    </aop:config>

     二、SpringJDBC ----->数据库

      1.spring配置文件中配置数据源bean

    <!-- 配置数据源:数据库交互的。c3p0 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="user" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="driverClass" value="${jdbc.driver}" />
            <property name="jdbcUrl" value="${jdbc.url}" />
        </bean>

      2.配置JDBCTemplate的bean

        <!-- 配置springjdbc的模板类 -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource" />
        </bean>

      3.使用JDBCTemplate。

        1.增删改的方法

        2.批量增删改

        3.查询一条记录

        4.查询多条记录

        5.查询单列值

    package com.zhiyou100.klb.dao;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.junit.jupiter.api.AfterAll;
    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    
    import com.zhiyou100.klb.bean.User;
    
    class SpringTest {
        
        private static JdbcTemplate jdbcTemplate;
    
        @BeforeAll
        static void setUpBeforeClass() throws Exception {
            ApplicationContext app = new ClassPathXmlApplicationContext("app.xml");
            jdbcTemplate = (JdbcTemplate) app.getBean("jdbcTemplate");
        }
    
        @AfterAll
        static void tearDownAfterClass() throws Exception {
        }
    
        /**
         * 查询多条记录
         */
        @Test
        void testFindAll() {
            String sql = "select * from user";
            RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
            List<User> list = jdbcTemplate.query(sql, rowMapper);
            System.out.println(list);
        }
        
        /**
         * 查询单列值
         */
        @Test
        void testFindSingleColumn() {
            String sql = "select count(*) from user";
            int c = jdbcTemplate.queryForObject(sql, Integer.class);
            System.out.println(c);
        }
        
        /**
         * 查询单个记录
         */
        @Test
        void testFindById() {
            String sql = "select * from user where id=?";
            RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
            List<User> list = jdbcTemplate.query(sql, rowMapper);
            System.out.println(list);
        }
        
        /**
         * 进行增删改查的操作
         */
        @Test
        void testUpdate() {
            String sql = "insert into user values(?,?,?)";
            jdbcTemplate.update(sql, "4","4","4");
        }
        
        /**
         * 批量更新
         */
        @Test
        void testBatchUpdate() {
            String sql = "insert into user values(?,?,?)";
            List<Object[]> batchArgs = new ArrayList<>();
            Object[] e1 = {"5","5","5"};
            batchArgs.add(e1);
            Object[] e2 = {"6","6","6"};
            batchArgs.add(e2);
            Object[] e3 = {"7","7","7"};
            batchArgs.add(e3);
            jdbcTemplate.batchUpdate(sql,batchArgs);
        }
    
    }

    三、springjdbc案例

      1.创建数据库

      

      2.建立项目并导入jar包

      3.创建操作类

    package com.zhiyou100.klb.dao;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class BookShopDaoImp implements BookShopDao {
    
        @Autowired
        private JdbcTemplate jdbcTemplate;
        
        @Override
        public void updateStock(String isbn) {
            String sql1 = "select stock from book_stock where isbn=?";
            Integer stock = jdbcTemplate.queryForObject(sql1, Integer.class,isbn);
            if(stock<=0) {
                throw new RuntimeException("书的库存不足");
            }
            String sql = "update book_stock set stock=stock-1 where isbn=?";
            jdbcTemplate.update(sql,isbn);
        }
    
        @Override
        public double findByBookIsbn(String isbn) {
            String sql = "select price from book where isbn=?";
            return jdbcTemplate.queryForObject(sql, Double.class,isbn);
        }
        
        @Override
        public void updateAccount(String username, double money) {
            String sql1 = "select balance from account where username=?";
            double balance = jdbcTemplate.queryForObject(sql1, Double.class,username);
            if(balance<=money) {
                throw new RuntimeException("书的库存不足");
            }
            String sql = "update account set balance=balance-? where username=?";
            jdbcTemplate.update(sql, money,username);
        }
    }

      4.创建服务类

    package com.zhiyou100.klb.dao;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class BookShopServiceImp implements BookShopService {
    
        @Autowired
        private BookShopDao bookShopDao;
        
        //订购
        @Override
        public void purchase(String username, String isbn) {
            //1.查询该书的价格
            double price = bookShopDao.findByBookIsbn(isbn);
            //2.修改书的库存
            bookShopDao.updateStock(isbn);
            //3.修改用户余额
            bookShopDao.updateAccount(username, price);
        }
    }

      5.配置xml文件

    <?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"
        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-4.2.xsd">
        
        <!-- 包扫描:扫描 -->
        <context:component-scan base-package="com.zhiyou100.klb.dao"/>
        
        <!-- 导入数据源 -->    
        <context:property-placeholder file-encoding="utf-8" location="classpath:*.properties"/>
        
        
        <!-- 配置数据源:数据库交互的。c3p0 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="user" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="driverClass" value="${jdbc.driver}" />
            <property name="jdbcUrl" value="${jdbc.url}" />
        </bean>
        
        <!-- 配置springjdbc的模板类 -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource" />
        </bean>
        
    </beans>

      6.测试

    package com.zhiyou100.klb.dao;
    
    import org.junit.jupiter.api.AfterAll;
    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    class BookShopServiceImpTest {
    
        @BeforeAll
        static void setUpBeforeClass() throws Exception {
        }
    
        @AfterAll
        static void tearDownAfterClass() throws Exception {
        }
    
        @Test
        void test() {
            ApplicationContext app = new ClassPathXmlApplicationContext("app.xml");
            BookShopService bookShopService = (BookShopService) app.getBean("bookShopServiceImp");
            bookShopService.purchase("Tom", "0001");
        }
    
    }
  • 相关阅读:
    Linux ld命令
    Linux readelf命令
    linux ar命令
    Linux升级Ruby
    Linux dkpg命令
    Linux apt-get命令
    Linux xxd命令
    Linux objdump命令
    Linux ldconfig命令
    git 删除目录
  • 原文地址:https://www.cnblogs.com/kklb/p/11489133.html
Copyright © 2011-2022 走看看