zoukankan      html  css  js  c++  java
  • Spring学习笔记(五)----Web项目整合、JdbcTemplate

    Spring 整合 Web 项目

    ApplicationContext 类处于 Action 层,每产生一个 Action 会存在效率问题

    实现原理

    1. ServletContext 对象(只有唯一的一个对象)
    2. 监听器

    在服务器启动时,为每个项目创建一个 ServletContext 对象
    监听到 ServeletContext 创建时,加载 Spring 配置文件并创建配置好的对象
    将对象放到 ServeletContext 对象中 (setArrtibute方法)
    获取对象(getAttribute方法)

    配置监听器

    需要导入 spring-web jar 包

    // web.xml
    <listener>
        <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class>
    </listener>
    

    指定 spring 配置文件位置

    // web.xml
    // 默认会找WEB-INFapplicationContext.xml
    <context-parm>
        <param-name> contextConfigLocation </param-name>
        <param-value> classpath:applicationContext.xml </param-value>
    </context-parm>
    

    Spring 的 JdbcTemplate 操作

    Spring 对不同的持久化技术都进行了封装 (Dao 层技术)

    准备

    1. 导入 Jar 包
      • spring-jdbc
      • spring-tx
      • jdbc(数据库驱动的 jar 包,如:mysql-connector)

    数据库操作

    // 1。 创建对象,设置数据库信息
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSourrce.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql:///test");
    dataSource.setUsername("root");
    dataSource.setPardword("root");
    // 2. 创建 jdbcTemplate 对象,设置数据源
    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    // 3. 使用 jdbcTemplate 的方法进行操作
    // 增加数据
    String sql = "insert into table values(?,?)";
    int rows = jdbcTemplate.updae(sql, "Jeson", "100");
    System.out.println(rows);
    // 删除数据
    String sql = "delete from table where xx=?";
    int rows = jdbcTemplate.update(sql, "xxx");
    System.out.println(rows);
    // 修改数据
    String sql = "update table set xx=? where xx=?";
    int rows = jdbcTemplate.update(sql, "xxx", "xxx");
    System.out.println(rows);
    // 查询数据
    // 查询返回一个值
    String sql = "seletc count(*) from table";
    int count = jdbcTemplate.queryForObject(sql, Integer.class);
    System.out.println(count);
    // 查询返回对象
    class MyRowMapper implements RowMapper<User> {
        @Override
        public User mapRow(ResultSet rs, int num) throws SQLException {
            // 从结果集得到数据并封装到自己定义的类中
            String username = rs.getString("username");
            String password = rs.getString("password");
    
            User user = new User();
            user.setUseranme(username);
            user.setPassword(password);
            return user;
        }
    }
    String sql = "select * from table where xx=?";
    User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "xx");
    System.out.println(user);
    // 查询返回 List
    String sql = "select * from talbe";
    List list = jdbcTemplate.query(sql, new MyRowMapper());
    Syste.out.println(list);
    

    Spring 配置连接池和 Dao 使用 JdbcTemplate

    Spring 配置 c3p0 连接池

    jar包:c3p0 和 machange-commons-java

    <!-- 配置连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 注入属性 -->
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql///test"/>
        <property naem="user" value="root"/>
        <property name="password" value="root"/>
    </bean>
    

    Dao 使用 JdacTemplate

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!-- 注入数据源 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    @Component(value="userDao")
    public class UserDao {
    
        @Autowired
        private JdbcTemplate jdbcTemplate;
        public void show() {
            String sql = "select * from talble";
            List list = jdbcTemplate.queryForByObject(sql, new MyRowMapper());
            // TODO
        }
    }
    
  • 相关阅读:
    第十八课 顺序存储线性表的分析
    第十七课 StaticList和DynamicList实现
    第十六课 顺序存储结构的抽象实现
    第十五课 线性表的顺序存储结构
    第十四课 线性表的本质和操作
    第十三课 类族结构的进化
    第十二课 顶层父类的创建
    第十一课 异常类构建
    HDU 5773The All-purpose Zero
    HDU 5755 Gambler Bo
  • 原文地址:https://www.cnblogs.com/qq188380780/p/11443848.html
Copyright © 2011-2022 走看看