博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring JDBC 数据访问
阅读量:7243 次
发布时间:2019-06-29

本文共 4927 字,大约阅读时间需要 16 分钟。

Spring JDBC是Spring所提供的持久层技术,它的主要目标是降低使用JDBC API的门槛,以一种更直接,更简介,更

简单的方式使用JDBC API, 在Spring JDBC里,仅需做那些与业务相关的DML操作,而将资源获取,Statment创建,
资源释放以及异常处理等繁杂而乏味的工作交给Spring JDBC.
虽然ORM的框架已经成熟丰富,但是JDBC的灵活,直接的特性,依然让他拥有自己的用武之地,如在完全依赖查询
模型动态产生查询语句的综合查询系统中,Hibernaye,MyBatis,JPA等框架都无法使用,这里JDBC是唯一的选择.

1. JdbcTemplate入门

1.1 创建项目-引入jar包-导入日志:log4j.properties

 

1.2 创建数据库

数据库名: springjdbc
创建角色表:

1 CREATE TABLE `role` (2 `rid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '角色id',3 `rname` VARCHAR(20) NOT NULL COMMENT '角色名',4 `alias` VARCHAR(20) NOT NULL COMMENT '角色别名',5 PRIMARY KEY (`rid`)6 )7 INSERT INTO role (rid,rname,alias)8 VALUES(1,'admin','系统管理员'),(2,'dispatcher','调度员');

1.3 测试代码

1 @Test 2 public void test1() throws Exception { 3 //TODO 测试jdbcTemplate简单使用 4 //1.创建c3p0链接池 5 ComboPooledDataSource dataSource = new ComboPooledDataSource(); 6 dataSource.setDriverClass("com.mysql.jdbc.Driver"); 7 dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/springjdbc"); 8 dataSource.setUser("root"); 9 dataSource.setPassword("111");10 //创建jdbcTemplate对象11 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);12 //创建sql语句13 String sql = "insert into role (rid , rname ,alias) value (? , ?,?);";14 jdbcTemplate.update(sql,"3","visitor","游客");15 }

2. Spring管理JdbcTemplate

1. 创建Role.java

1 public class Role {2 private Integer cid;3 private String rname;4 private String alias;5 //setter getter6 }

2. RoleDao.java

1 public interface RoleDao { 2 //增 3 void save(Role role); 4 //删除 5 void delete(Integer id); 6 //改 7 void update(Role role); 8 //查 9 Role getById(Integer id);10 //查11 int getTotalCount();12 //查13 List
getAll();14 }

3. 创建RoleDaoImpl.java

创建数据源(连接池),JdbcTemplate,RoleDao交给Spring容器管理(IOC)

注意: 可以自己在RoleDaoImpl中添加 JdbcTemplate变量,如果不自动装载记得添加变量的set方法,
标准的操作,我们可以让RoleDaoImpl 继承 JdbcDaoSupport, 因为
(org.springframework.jdbc.core.support.JdbcDaoSupport)类提供了JdbcTemplate对象以及对应的获取和设置方
法.不用自己在实现类中添加JdbcTemplate变量!!

JdbcTemplate // Spring操作数据模板类(工具类)JdbcTemplate.update(sql,ArgsObj....); //DMLJdbcTemplate.execute(sql) //DDL DCL//DQL 查询单个jdbcTemplate.queryForObject(String var1, RowMapper
var2, Object... var3);RowWapper
将结果封装的处理器; 得到Result解析成实体类对象即可!//查询所有jdbcTemplate.query(String var1, RowMapper
var2, Object... var3);

RoleDaoImple代码:

1 public class RoleDaoImpl extends JdbcDaoSupport implements RoleDao { 2 public void save(Role role) { 3 //TODO 插入数据 4 String sql = "INSERT INTO role (rname,alias) value (?,?) ;"; 5 getJdbcTemplate().update(sql,role.getRname(),role.getAlias()); 6 } 7 public void delete(Integer id) { 8 //TODO 根据id删除 9 String sql = "delete from role where rid = ? ;";10 getJdbcTemplate().update(sql,id);11 }12 public void update(Role role) {13 //TODO 修改role信息14 String sql="update role set rname = ? , alias = ? where rid = ? ;" ;15 getJdbcTemplate().update(sql,role.getRname(),role.getAlias(),role.getRid());16 }17 public Role getById(Integer id) {18 String sql = "select * from role where rid = ? ;";19 //直接查询20 // Role role = getJdbcTemplate().queryForObject(sql, new Object[]{id}, Role.class);21 Role role = (Role) getJdbcTemplate().queryForObject(sql, new Object[]{id}, new22 RowMapper() {23 public Object mapRow(ResultSet resultSet, int index) throws SQLException {24 //将一行数据解析成一个java对象25 return mapRowHandler(resultSet);26 }27 });28 return role;29 }30 public int getTotalCount() {31 String sql = "select count(*) from role ;";32 Integer count = getJdbcTemplate().queryForObject(sql,Integer.class);33 return count;34 }35 //查询所有36 public List
getAll() {37 String sql = "select * from role";38 List
list = getJdbcTemplate().query(sql, new RowMapper
() {39 public Role mapRow(ResultSet resultSet, int i) throws SQLException {40 return mapRowHandler(resultSet);41 }42 });43 return list;44 }45 private Role mapRowHandler(ResultSet resultSet) throws SQLException{46 Role role = new Role();47 role.setRid(resultSet.getInt("rid"));48 role.setRname(resultSet.getString("rname"));49 role.setAlias(resultSet.getString("alias"));50 return role;51 }52 }
View Code

4. 创建数据库配置文件

文件名:db.properties

位置: src下/ maven项目 resources文件夹下

jdbc.jdbcUrl=jdbc:mysql://localhost:3306/****jdbc.driverClass=com.mysql.jdbc.Driverjdbc.user=rootjdbc.password=***

5.编写IOC配置

文件名:applicationContext.xml

位置:src下 / maven项目 resources文件夹下

1 
2
12
13
15
21
22
23
24
25
26
27
28

测试:

1 @Test 2 public void test2(){ 3 //TODO 测试使用配置文件 4 ApplicationContext context =new 5 ClassPathXmlApplicationContext("applicationContext.xml"); 6 RoleDao dao = context.getBean("roleDao", RoleDaoImpl.class); 7 Role byId = dao.getById(2); 8 System.out.println(byId); 9 List
all = dao.getAll();10 System.out.println("all = " + all);11 }

 

转载于:https://www.cnblogs.com/sueyyyy/p/9277246.html

你可能感兴趣的文章
坦克大战---可能带BUG
查看>>
excel表数据分列
查看>>
3、kvm虚拟机日常管理与配置
查看>>
php各个模式、版本的区别
查看>>
shell中的点命令与source命令
查看>>
我的友情链接
查看>>
百度 ueditor 富文本编辑器的使用心得 jsp版本 1.4的JDK weblogic8
查看>>
软件安装
查看>>
增加点访问量
查看>>
MongoDB笔记十七——Mongodb导入
查看>>
sdfgsdf
查看>>
别人的tomcat配置
查看>>
linux基础命令练习题
查看>>
《Memcached应用实战》
查看>>
我的友情链接
查看>>
Linux 基础学习 文件查找命令 find 部分用法
查看>>
怎样成为一个高级的研发工程师
查看>>
Telnet部署与启动 windows&&linux
查看>>
落力在岁月青葱
查看>>
2015年春节往事小记
查看>>