• 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
        }
    }
    
  • 相关阅读:
    机器学习进度(六)—— 主成分分析
    留言版
    打赏
    第十四周总结
    第十三周总结
    软件测试读后感(二)
    第十二周总结
    第十一周总结
    软件测试读后感(一)
    虚拟机常用shell命令
  • 原文地址:https://www.cnblogs.com/qq188380780/p/11443848.html
Copyright © 2020-2023  润新知