spring操作數據庫
阿新 • • 發佈:2019-05-07
ride ase err into object 模板 url jdb word
1、JdbcTemplate
spring對數據庫的操作在jdbc上做了更深層次的封裝JdbcTemplate
,處理了資源的建立和釋放(不需要我們管理連接了),我們只需要提供SQL語句(不需要我們設置參數了)和提取結果(查詢時候可以直接返回對應的實體類),使JDBC更加易於使用。它也可以使用spring的註入功能,將數據源註入JdbcTemplate
,來實現操作數據庫。
2、JdbcTemplate常用方法
- update(更新數據)
- batchUpdate(批量更新數據)
- queryForObject(查詢單行數據或者單值數據)
query(查詢多行數據)
3、Spring中實現jdbcTemplate對數據庫操作(采用c3p0連接池)
1、需要導入的jar包
- spring-jdbc-5.0.6.RELEASE.jar
- spring-tx-5.0.6.RELEASE.jar
- mysql-connector-java-5.0.7.jar
c3p0-0.9.5.2.jar
2、springxml配置
<context:property-placeholder location="classpath:jdbc.properties" /> <!-- 配置c3p0數據源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> </bean> <!-- 將c3p0數據源註入jdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean>
3、User實體類
public class User { private int id; private String username; private String password; public User() { super(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + "]"; } }
4、測試類
public void testUserServiceImpl() { //獲取IOC容器 ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); //通過ApplicationContext對象的getBean方法來獲取對象實例 //獲取數據連接模板JdbcTemplate JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); //增加 String sql1 = "insert into user(username,password) values(?,?)"; System.out.println(jdbcTemplate.update(sql1, "user","user123")); //修改 String sql2 = "update user set username = ? where id = 10000"; System.out.println(jdbcTemplate.update(sql2, "adminadmin")); //查詢基本數據 String sql3 = "select count(*) from user"; System.out.println(jdbcTemplate.queryForObject(sql3, Integer.class)); //查詢單條記錄 String sql4 = "select * from user where id = 10000"; RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class); User user = jdbcTemplate.queryForObject(sql4, rowMapper); System.out.println(user); //查詢多條記錄 String sql5 = "select * from user"; List<User> list = jdbcTemplate.query(sql5, rowMapper); for (User user2 : list) { System.out.println(user2); } //批量插入 String sql6 = "insert into user(username,password) values(?,?)"; List<Object[]> batchArgs=new ArrayList<Object[]>(); batchArgs.add(new Object[]{"aaaa","aaa123"}); batchArgs.add(new Object[]{"bbbb","bbb123"}); batchArgs.add(new Object[]{"cccc","ccc123"}); jdbcTemplate.batchUpdate(sql6, batchArgs); }
spring操作數據庫