Spring爲各類持久化技術提供了簡單操做的模板和回調API:html
ORM持久化技術 | 模板類 |
原生JDBC | org.springframework.jdbc.core.JdbcTemplate |
Hibernate5.0 | org.springframework.orm.hibernate5.HibernateTemplate |
IBatis(MyBatis) | org.springframework.orm.ibatis.SqlMapClientTemplate |
JPA | org.springfrmaework.orm.jpa.JpaTemplate |
其中,對於原生的JDBC編程,Spring提供了JDBCTemplate,對jdbc操做進行了一系列封裝,使得jdbc編程更加簡單。mysql
數據庫驅動包則按需引入。spring
1 jdbc.user=root 2 jdbc.password=123456 3 jdbc.driverClass=com.mysql.jdbc.Driver 4 jdbc.jdbcUrl=jdbc\:......
在Spring配置文件中,注入dataSource,從配置文件中獲取內容進行bean的初始化。sql
<context:property-placeholder location="classpath:db.properties"/> //指定數據庫鏈接配置文件 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> //託管dataSource bean <property name="user" value="${jdbc.user}"></property> //獲取配置文件內容對dataSource進行初始化 <property name="password" value="${jdbc.password}"></property> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> //託管jdbcTemplate,引用dataSource <property name="dataSource" ref="dataSource"></property> </bean>
1:經過Spring配置文件啓動IOC容器數據庫
//啓動IoC容器 ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
2:在IOC容器獲取jdbcTemplate實例編程
//獲取IoC容器中JdbcTemplate實例 JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");
3:使用jdbcTemplate調用方法執行數據庫操做app
JdbcTemplate主要提供如下五大方法:函數
execute方法:能夠用於執行任何SQL語句。this
update方法及batchUpdate方法:update方法用於執行新增、修改、刪除等語句;batchUpdate方法用於執行批處理相關語句;spa
query方法及queryForXXX方法:用於執行查詢相關語句;
call方法:用於執行存儲過程、函數相關語句。
3.1)經過 update 進行插入
String sql="insert into user (name,deptid) values (?,?)"; int count= jdbcTemplate.update(sql, new Object[]{"caoyc",3});
3.2)經過 update 進行修改
String sql="update user set name=?,deptid=? where id=?"; jdbcTemplate.update(sql,new Object[]{"zhh",5,51});
3.3)經過 update 進行刪除
String sql="delete from user where id=?";
jdbcTemplate.update(sql,51);
3.4)批量插入、修改、刪除
String sql="insert into user (name,deptid) values (?,?)"; List<Object[]> batchArgs=new ArrayList<Object[]>(); batchArgs.add(new Object[]{"caoyc",6}); batchArgs.add(new Object[]{"zhh",8}); batchArgs.add(new Object[]{"cjx",8}); jdbcTemplate.batchUpdate(sql, batchArgs);
數據庫操做通常結合ORM進行使用。
1:首先定義實體類
package com.proc; public class User { private Integer id; private String name; private Integer deptid; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getDeptid() { return deptid; } public void setDeptid(Integer deptid) { this.deptid = deptid; } public String toString() { return "User [id=" + id + ", name=" + name + ", deptid=" + deptid + "]"; } }
2:而後定義該實體類的DAO類
package com.proc; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; @Repository public class UserDao { @Autowired private JdbcTemplate jdbcTemplate; public User get(int id){ String sql="select id,name,deptid from user where id=?"; RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class); return jdbcTemplate.queryForObject(sql, rowMapper,id); } }
在DAO類中,定義對應實體實例的增刪查改操做方法,在方法體中,使用jdbcTemplate。
3:在service層,經過dao實例調用方法,執行數據操做。
UserDao userDao=(UserDao) ctx.getBean("userDao");
System.out.println(userDao.get(53));