当前位置: 首页 > wzjs >正文

做公司的网站付的钱怎么入账上海有什么seo公司

做公司的网站付的钱怎么入账,上海有什么seo公司,网站开发用例说明,视频网站开发技术一、JDBC模板技术:简化数据库操作 在传统JDBC开发中,繁琐的资源管理和重复代码一直是开发者的痛点。Spring框架提供的 JDBC模板(JdbcTemplate) 彻底改变了这一现状,它通过封装底层JDBC操作,让开发者仅需关注SQL逻辑&a…

一、JDBC模板技术:简化数据库操作

在传统JDBC开发中,繁琐的资源管理和重复代码一直是开发者的痛点。Spring框架提供的 JDBC模板(JdbcTemplate) 彻底改变了这一现状,它通过封装底层JDBC操作,让开发者仅需关注SQL逻辑,大幅提升开发效率。

1.1 快速入门:从手动编码到Spring管理

手动创建模板对象

@Test
public void run1() {// 配置数据库连接池DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setUrl("jdbc:mysql:///spring_db");dataSource.setUsername("root");dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setPassword("root");// 创建JdbcTemplate并执行SQLJdbcTemplate template = new JdbcTemplate(dataSource);template.update("insert into account values (null,?,?)", "熊大", 1000);
}

Spring管理模板对象

通过配置文件将数据源和模板纳入IOC容器管理,避免硬编码:

<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql:///spring_db" /><property name="username" value="root" /><property name="password" value="root" />
</bean><!-- 配置JdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource" />
</bean>

1.2 进阶用法:操作数据库的增删改查

执行更新操作(增、删、改)

// 新增数据
jdbcTemplate.update("insert into account values (null,?,?)", "熊二", 500);
// 修改数据
jdbcTemplate.update("update account set name = ?,money = ? where id = ?", "光头强", 100, 7);
// 删除数据
jdbcTemplate.update("delete from account where id = ?", 7);

查询操作:结果集映射

通过RowMapper接口实现自定义数据封装,例如将查询结果映射为Account对象:

// 单个对象查询
Account account = jdbcTemplate.queryForObject("select * from account where id = ?", new BeanMapper(), // 自定义RowMapper实现类6
);// 列表查询
List<Account> list = jdbcTemplate.query("select * from account", new BeanMapper()
);class BeanMapper implements RowMapper<Account> {@Overridepublic Account mapRow(ResultSet rs, int rowNum) throws SQLException {Account account = new Account();account.setId(rs.getInt("id"));account.setName(rs.getString("name"));account.setMoney(rs.getDouble("money"));return account;}
}

1.3 集成开源连接池:以Druid为例

替换为高性能的Druid连接池只需两步:

  1. 添加Maven依赖:
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version>
</dependency>
  1. 修改配置文件:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" />
</bean>

同时建议将数据库配置提取到jdbc.properties文件,通过<context:property-placeholder>标签加载,提升配置灵活性。

二、模拟转账开发:业务逻辑与事务需求

转账场景是检验数据库操作和事务管理的典型场景,涉及扣减余额增加余额两个核心步骤,必须保证原子性——要么全部成功,要么全部回滚。

2.1 业务层与持久层设计

服务接口定义

public interface AccountService {void pay(String out, String in, double money); // 转账方法
}

持久层实现(基于JdbcTemplate)

public class AccountDaoImpl implements AccountDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}// 付款:扣减余额@Overridepublic void outMoney(String out, double money) {jdbcTemplate.update("update account set money = money - ? where name = ?", money, out);}// 收款:增加余额@Overridepublic void inMoney(String in, double money) {jdbcTemplate.update("update account set money = money + ? where name = ?", money, in);}
}

服务层实现

public class AccountServiceImpl implements AccountService {private AccountDao accountDao;public void setAccountDao(AccountDao accountDao) {this.accountDao = accountDao;}@Overridepublic void pay(String out, String in, double money) {accountDao.outMoney(out, money); // 扣钱accountDao.inMoney(in, money); // 加钱}
}

2.2 未加事务的问题:数据不一致风险

若转账过程中(如扣钱后)发生异常(如服务器崩溃),会导致付款方余额已扣减但收款方未到账,破坏数据一致性。例如:

@Override
public void pay(String out, String in, double money) {accountDao.outMoney(out, money); // 成功执行int a = 1/0; // 模拟异常accountDao.inMoney(in, money); // 未执行
}

此时需要事务管理来保障操作的原子性。

三、Spring事务管理:声明式与注解式实现

Spring提供了两种事务管理方式:编程式事务(手动编写事务代码)和声明式事务(推荐,通过配置或注解管理)。

3.1 声明式事务:基于XML配置

步骤1:配置事务管理器

<!-- 平台事务管理器,基于数据源 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" />
</bean>

步骤2:定义事务通知

<!-- 事务通知:指定哪些方法需要事务增强 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- pay方法配置:默认隔离级别, REQUIRED传播行为 --><tx:method name="pay" isolation="DEFAULT" propagation="REQUIRED" /><!-- 所有find开头的方法设为只读 --><tx:method name="find*" read-only="true" /></tx:attributes>
</tx:advice>

步骤3:AOP织入事务

<aop:config><!-- 将事务通知应用到指定切入点 --><aop:advisor advice-ref="txAdvice" pointcut="execution(public * com.qcbyjy.*.AccountServiceImpl.pay(..))" />
</aop:config>

3.2 注解式事务:更简洁的开发体验

步骤1:开启事务注解支持

在配置文件中添加:

<tx:annotation-driven transaction-manager="transactionManager" />

步骤2:在服务方法上添加@Transactional注解

@Service
@Transactional // 类级注解:对所有方法启用事务
public class AccountServiceImpl implements AccountService {@Autowiredprivate AccountDao accountDao;@Overridepublic void pay(String out, String in, double money) {accountDao.outMoney(out, money); int a = 1/0; // 异常会触发事务回滚accountDao.inMoney(in, money);}
}
  • @Transactional可作用于类或方法,推荐作用于方法以精准控制。
  • 关键属性:
    • isolation:隔离级别(如Isolation.REPEATABLE_READ)。
    • propagation:传播行为(如Propagation.REQUIRED,默认值)。
    • rollbackFor:指定需要回滚的异常类型。

3.3 纯注解配置:全Java代码管理

通过@Configuration类替代XML配置,实现完全注解化开发:

@Configuration
@ComponentScan(basePackages="com.qcbyjy.demo6")
@EnableTransactionManagement // 开启事务注解
public class SpringConfig {@Bean(name="dataSource")public DataSource createDataSource() throws Exception {DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setUrl("jdbc:mysql:///spring_db");dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUsername("root");dataSource.setPassword("root");return dataSource;}@Bean(name="jdbcTemplate")public JdbcTemplate createJdbcTemplate(DataSource dataSource) {return new JdbcTemplate(dataSource);}@Bean(name="transactionManager")public PlatformTransactionManager createTransactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}
}

四、核心总结:三大模块的协同作用

模块作用描述
JDBC模板封装JDBC操作,简化数据库访问,支持连接池和结果集映射。
模拟转账业务体现事务的必要性,通过扣减/增加余额的原子性需求,引出事务管理的核心价值。
声明式事务基于AOP实现非侵入式事务管理,通过配置或注解灵活控制事务范围和行为。

通过这三大模块的结合,Spring框架实现了高效的数据访问安全的业务逻辑便捷的事务控制,成为企业级开发中不可或缺的核心技术。开发者只需专注业务逻辑,底层的资源管理和事务保障由框架自动完成,极大提升了开发效率和系统稳定性。

http://www.dtcms.com/wzjs/482935.html

相关文章:

  • 中建西部建设广通讯网站视频号的链接在哪
  • 做网站一排文字怎么水平对齐线上宣传有哪些好的方式方法
  • 无锡做网站设计的企业友情链接搜读
  • 广州地区做网站的企点qq
  • 网站开发前期功能策划关键词搜索
  • node.js 网站开发成都搜索优化排名公司
  • 淘宝上做网站的靠谱广告推广投放平台
  • wordpress重定向自定义百度seo推广工具
  • 做一元购网站长沙网站seo收费
  • 做外销b2b网站对比网站关键词挖掘
  • 局域网站建设热点新闻事件及评论
  • 福州做网站价格推广平台都有哪些
  • 犀牛云做网站骗人企业整站推广
  • 软件免费开发网站建设杭州网络优化公司排名
  • 石家庄市住房和城乡建设局官方网站头条今日头条新闻
  • 怎么做色情网站赚钱申请网站域名要多少钱
  • 远程时代网站建设win7优化大师好不好
  • 网站开发知识版权百度关键词分析
  • 网站模块插件是怎么做的seo+网站排名
  • 网站建设-猴王网络百度文库网页版登录入口
  • 网站建设的一般过程成都百度
  • 徐州建设工程网上交易平台武汉seo工作室
  • 阿里云模板建站好不好网络推广怎么做好
  • 上海百度公司总部seo点击工具帮你火21星热情
  • 无锡网站建设技术外包如何引流被动加好友微信
  • 商城网站模版代码seo排名优化厂家
  • 网站 沙盒品牌推广工作内容
  • 网站建设方面的知识抖音指数
  • 怎样在网站上做外贸青岛百度网站排名
  • 专门做母婴的网站有哪些电商平台建设方案