• 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
        }
    }
    
  • 相关阅读:
    转角色权限系统的一些概念
    error message cs0012
    关于Action返回结果类型的事儿(下)
    MVC中权限的知识点及具体实现代码
    iis7 发布mvc3 遇到的HTTP错误 403.14Forbidden Web 服务器被配置为不列出此目录的内容及Login on failed for "IIS APPPOOL\ASP.NET v4.0"问题
    关于获取时间段的整理片段
    ASP.NET MVC – 关于Action返回结果类型的事儿(上)
    Lucene 查询权重排序因子解释(备查)
    Lucene代替SQL Server NewGuid获取随机结果
    如何在Web数据挖掘中保证用户访问速度的一点实践(SQLite+Quartz)
  • 原文地址:https://www.cnblogs.com/qq188380780/p/11443848.html
Copyright © 2020-2023  润新知