一、使用 JdbcTemplate连接数据库
Spring 框架中 org.springframework.jdbc.core 包提供了 JDBC 模板类,其中JdbcTemplate 是 core 这个包的核心类,其他模板类都是基于它封装完成的。JdbcTemplate 类主要提供以下四类方法:
注意:JdbcTemplate 的 query 方法,支持传入一个 Callback 接口:
(1)Mybatis 优势:
(2)引入 Mybatis依赖包:
在pom.xml文件中配置:
org.springframework
spring-jdbc
4.3.1.RELEASE
org.springframework.ws
spring-oxm
1.5.9
org.mybatis
mybatis
3.2.8
org.mybatis
mybatis-spring
1.2.2
com.oracle
ojdbc14
10.2.0.4.0
org.apache.tomcat
tomcat-jdbc
8.0.32
runtime
(3)在src/main/resources下配置文件
jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test_db?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true
jdbc.username=root
jdbc.password=root
jdbc.driver.ora=oracle.jdbc.driver.OracleDriver
jdbc.url.ora=jdbc:oracle:thin:@127.0.0.1:1521:HLX
jdbc.username.ora=scott
jdbc.password.ora=hsx
#connection pool settings
jdbc.pool.maxIdle=20
jdbc.pool.maxActive=190
applicationContext.xml 中配置 dataSource
applicationContext.xml 中配置 sqlSessionFactory和 sqlSessionTemplate,还有其他的;
select seq_uid.currval as id from dual
insert into userinfos(id,uname, upass) values(seq_uid.nextval,#{uname}, #{upass})
DELETE from userinfos where id=#{id}
package com.hlx.dao;
import java.util.List;
import com.hlx.entity.Userinfo;
public interface UserinfoDao {
void save(Userinfo user);
Userinfo selectById(Integer id);
void delUserinfo(Integer id); // 删除用户
List all(); // 查询所有的数据
}
public interface UserinfoService {
void addUserinfo(String name, String pwd); // 添加用户
void delUserinfo(Integer id); // 删除用户
Userinfo getUserinfoById(Integer id); // 根据用户ID来查询数据
List all(); // 查询所有的数据
//使用MyBatis------------------------------------------
void addUserinfoMyBatis(String name, String pwd); // 添加用户
void delUserinfoMyBatis(Integer id); // 删除用户
Userinfo getUserinfoByIdMyBatis(Integer id); // 根据用户ID来查询数据
List allMyBatis(); // 查询所有的数据
//------------------------------------------
}
/**
* 实现业务
*
* @author Administrator
*
*/
@Service
public class UserinfoServiceImpl implements UserinfoService {
// 注入jdbcTemplate
@Resource
JdbcTemplate jdbcTemplate;
/**
* 添加,事务管理
*/
@Transactional
@Override
public void addUserinfo(final String name, final String pwd) {
//支持seq_uid.nextval (oracle自动序列化)
final String sql = "insert into userinfos(id,uname,upass) values(seq_uid.nextval,?,?)";
// 保存生成后的PK ===>Mysql支持 (oracle不支持)
//KeyHolder key = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection arg0)
throws SQLException {
PreparedStatement ps = arg0.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, pwd);
return ps;
}
});
// 输出key
//System.out.println("key=" + key.getKey().intValue());
}
/**
* 删除,事务管理
*/
@Transactional
@Override
public void delUserinfo(Integer id) {
// TODO Auto-generated method stub
String sql="delete from userinfos where id=?";
jdbcTemplate.update(sql, id);
}
@Override
public Userinfo getUserinfoById(Integer id) {
// TODO Auto-generated method stub
String sql="select * from userinfos where id=?";
//实体对象
final Userinfo user= new Userinfo();
//查询
jdbcTemplate.query(sql, new Object[]{id}, new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException {
// TODO Auto-generated method stub
user.setUname(rs.getString("uname"));
user.setUpass(rs.getString("upass"));
}
});
//设置ID
user.setId(id);
return user;
}
@Override
public List all() {
// TODO Auto-generated method stub
String sql ="select * from userinfos";
final List lists = new ArrayList();
jdbcTemplate.query(sql, new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException {
// TODO Auto-generated method stub
Userinfo user= new Userinfo();
user.setUname(rs.getString("uname"));
user.setUpass(rs.getString("upass"));
user.setId(rs.getInt("id"));
//添加到集合中
lists.add(user);
}
});
return lists;
}
/////////////////////mybatis///////////////////////////////////////
//注入接口
@Resource
UserinfoDao userinfoDao;
@Transactional
@Override
public void addUserinfoMyBatis(String name, String pwd) {
// TODO Auto-generated method stub
Userinfo user=new Userinfo();
user.setUname(name);
user.setUpass(pwd);
userinfoDao.save(user);
}
@Transactional
@Override
public void delUserinfoMyBatis(Integer id) {
// TODO Auto-generated method stub
userinfoDao.delUserinfo(id);
}
@Override
public Userinfo getUserinfoByIdMyBatis(Integer id) {
// TODO Auto-generated method stub
return userinfoDao.selectById(id);
}
@Override
public List allMyBatis() {
// TODO Auto-generated method stub
return userinfoDao.all();
}
}
整个工程
效果(一): JdbcTemplate连接数据库
效果(二): Mybatis连接数据库
总结:
1、使用SpringMVC+ JdbcTemplate操作Oracle数据库CRUD
2、使用SpringMVC+ Mybatis操作Oracle数据库CRUD