查看“Spring:JdbcTemplate、事务”的源代码
←
Spring:JdbcTemplate、事务
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:SpringFramework]] == 关于 === spring对不同的持久化层技术都进行了封装: :[[File:spring的dao模板类.png|600px]] jdbcTemplate 对JDBC进行了封装; === jar包 === [[File:spring-JDBCTemplate相关jar包.jpg|400px]] * 数据库驱动包; * JDBC 包; * 事务包 === JDBC 模板的基本使用 === <syntaxhighlight lang="java" highlight="3,9"> @Test public void demo1(){ DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///spring_day03"); dataSource.setUsername("root"); dataSource.setPassword("123"); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update("insert into account values (null,?,?)", " 会希",10000d); } </syntaxhighlight> == 连接池 == 数据库连接池(Connection pooling):程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请、使用、释放。<br/> 连接池的机制: # 程序初始化时创建连接池; # 使用时向连接池申请可用连接; # 使用完毕,将连接返还给连接池; # 程序退出时,断开所有连接,并释放资源; 其中: # 最小连接数:连接池一直保持的数据库连接; # 最大连接数:连接池能申请的最大连接数: #: 如果数据库连接请求超过最大次数,后到的请求将被加入等待队列; === Spring 内置连接池 === “org.springframework.jdbc.datasource.'''DriverManagerDataSource'''”: # 配置内置连接池: #: <syntaxhighlight lang="properties"> <!-- 配置Spring 的内置连接池--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///spring_day02"/> <property name="username" value="root"/> <property name="password" value="123"/> </bean> </syntaxhighlight> # 配置jdbcTemplate模板: #: <syntaxhighlight lang="properties"> <!-- 配置JDBC 模板--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> </syntaxhighlight> # 编写测试类: #* 注入 jdbcTemplate; #: <syntaxhighlight lang="java"> @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class SpringDemo2 { @Resource(name="jdbcTemplate") private JdbcTemplate jdbcTemplate; @Test public void demo1(){ jdbcTemplate.update("insert into account values (null,?,?)", "eijux",10000d); } } </syntaxhighlight> === DBCP 连接池 === # 引入dbcp 连接池的jar 包: #: [[File:dbcp 连接池的jar 包.jpg|400px]] # 配置连接池: #:<syntaxhighlight lang="properties"> <!-- 配置DBCP 连接池--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///spring_day02"/> <property name="username" value="root"/> <property name="password" value="123"/> </bean> </syntaxhighlight> === c3p0 连接池 === # 引入相应的jar 包: #: [[File:c3p0 连接池的jar 包.jpg|400px]] # 配置连接池: #:<syntaxhighlight lang="properties"> <!-- 配置C3P0 连接池--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql:///spring_day02"/> <property name="user" value="root"/> <property name="password" value="123"/> </bean> </syntaxhighlight> == 使用属性文件 == 定义属性文件“jdbc.properties”: <syntaxhighlight lang="properties"> jdbc.driverClass=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///spring_day02 jdbc.username=root jdbc.password=123 </syntaxhighlight> 引入外部的属性文件:(两种方式) # 第一种方式: #:<syntaxhighlight lang="properties"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> </syntaxhighlight> # 第二种方式: #:<syntaxhighlight lang="properties"> <context:property-placeholder location="classpath:jdbc.properties"/> </syntaxhighlight> == jdbcTemplate == JDBC 模板CRUD 的操作: * JdbcTemplate类使用“org.springframework.jdbc.core.'''RowMapper<T>'''”接口进行结果映射:将结果集ResultSet的行,映射到实际的结果对象。 <syntaxhighlight lang="java" highlight="5-6,11,26,32,38,41-45"> @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class SpringDemo3 { @Resource(name="jdbcTemplate") private JdbcTemplate jdbcTemplate; @Test // 插入操作 public void demo1() { jdbcTemplate.update("insert into account values (null,?,?)", "冠希",10000d); } @Test // 修改操作 public void demo2() { jdbcTemplate.update("update account set name=?,money =? where id = ?", "思雨",10000d,5); } @Test // 删除操作 public void demo3() { jdbcTemplate.update("delete from account where id = ?", 5); } @Test // 查询一条记录 public void demo4() { Account account = jdbcTemplate.queryForObject("select * from account where id = ?", new MyRowMapper(), 1); System.out.println(account); } @Test // 查询所有记录 public void demo5() { List<Account> list = jdbcTemplate.query("select * from account", new MyRowMapper()); for (Account account : list) { System.out.println(account); } } class MyRowMapper implements RowMapper<Account> { @Override public 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; } } } </syntaxhighlight> # 注入了 jdbcTemplate; # 使用 jdbcTemplate进入db操作; # 使用 RowMapper进行结果集映射; == 事务 ==
返回至“
Spring:JdbcTemplate、事务
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息