Spring JDBC入门
Spring JDBC模块是Spring框架的基础模块之一
在Spring JDBC模块中,所有的类可以被分到四个单独的包:
1)core即核心包,它包含了JDBC的核心功能。此包内有很多重要的类,包括:JdbcTemplate类、SimpleJdbcInsert类,SimpleJdbcCall类,以及NamedParameterJdbcTemplate类。
2)datasource即数据源包,访问数据源的实用工具类。它有多种数据源的实现,可以在JavaEE容器外部测试JDBC代码。
3)object即对象包,以面向对象的方式访问数据库。它允许执行查询并返回结果作为业务对象。它可以在数据表的列和业务对象的属性之间映射查询结果。
4)support即支持包,是core包和object包的支持类。例如提供了异常转换功能的SQLException类。
简单增删改查:
配置文件:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<context:component-scan base-package="jdbc.j1" />
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/mydata">
</property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate" abstract="false"
lazy-init="false">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="userDao" class="jdbc.j1.UserDao">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate" />
</property>
</bean>
</beans>
实体类:
package jdbc.j1;
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = 4982996394229149942L;
int id;
String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(int id,String name){
this.id=id;
this.name=name;
}
}
UserDao类:
package jdbc.j1;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void updete(String name) {
String sql = "insert into newuser (name) values (?)";
jdbcTemplate.update(sql,new Object[]{name});
}
public void batch_insert() {
String sql = "insert into newuser (name) values (?)";
List<Object[]> list = new LinkedList<>();
list.add(new Object[]{"A"});
list.add(new Object[]{"B"});
list.add(new Object[]{"C"});
list.add(new Object[]{"D"});
list.add(new Object[]{"E"});
jdbcTemplate.batchUpdate(sql, list);
}
public void fetch_many() {
String sql = "select id,name from newuser";
RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
List<User> list = jdbcTemplate.query(sql,rowMapper);
for (User user : list) {
System.out.println(user.getId()+"---"+user.getName());
}
}
public void delete(String name) {
String sql = "delete from newuser where name=?";
jdbcTemplate.update(sql,new Object[]{name});
}
public void change(User user){
String sql = "update newuser set name=? where id=?";
jdbcTemplate.update(sql,new Object[]{user.getName(),user.getId()});
}
public List<User> findall() {
String sql = "select * from newuser";
List<User> users = jdbcTemplate.query(sql, new ResultSetExtractor<List<User>>() {
@Override
public List<User> extractData(ResultSet arg0) throws SQLException,
DataAccessException {
List<User> users = new ArrayList<>();
while(arg0.next()) {
int id = arg0.getInt("id");
String name = arg0.getString("name");
User user = new User(id, name);
users.add(user);
}
return users;
}
});
return users;
}
}