这是本人通过各种优化技巧而实现的一个经典的数据库访问层:
数据源用的事DBCP开源包。
使用Spring框架提供的JdbcTemplate替代我写的数据库访问层是一个非常不错的选择,因为我差不多是按JdbcTemplate的思想写的,不过和它比起来还是有很大的差距,所以实际项目中我也是用JdbcTemplate,而不是自己写。
public class UserDaoSpringImpl implements UserDao {
private SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(JdbcUtils.getMyDataSource());
@Override
public void addUser(User user) {
String sql = "insert into user(name,password,birthday,money) values(:name,:password,:birthday,:money)";
SqlParameterSource paramSource = new BeanPropertySqlParameterSource(user);
KeyHolder keyHolder = new GeneratedKeyHolder();
this.simpleJdbcTemplate.getNamedParameterJdbcOperations().update(sql, paramSource, keyHolder);
user.setId(keyHolder.getKey().longValue());
}
@Override
public void delete(User user) {
String sql = "delete from user where id=?";
Object[] args = new Object[] { user.getId() };
this.simpleJdbcTemplate.update(sql, args);
}
@Override
public User findUser(String loginName, String password) {
String sql = "select name,password,birthday,money from user where name=? and password=?";
Object[] args = new Object[] { loginName, password };
User user = (User) this.simpleJdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), args);
return user;
}
@Override
public User getUser(int userId) {
String sql = "select id,name,password,birthday,money from user where id=?";
Object[] args = new Object[] { userId };
User user = (User) this.simpleJdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), args);
return user;
}
@Override
public String getUserName(int id) {
String sql = "select name from user where id=?";
String name = (String) this.simpleJdbcTemplate.queryForObject(sql, String.class, id);
return name;
}
@Override
public void update(User user) {
String sql = "update user set name=:name,password=:password,birthday:=birthday,money=:money where id=:id";
SqlParameterSource paramterSource = new BeanPropertySqlParameterSource(user);
this.simpleJdbcTemplate.update(sql, paramterSource);
}
}
分享到:
相关推荐
如果不能运行,参看“DBCP的使用注意事项” 博文链接:https://ccx20060810501.iteye.com/blog/481595
数据库访问通用实现封装 C#实现 不以灵活配置数据库类型,方便。实现三层架构,开发的必要功能,由于技术有效如有错误请大家指正!
它提供了一个抽象层来访问数据,不管您使用的是哪个数据 库,并确保有一个单独的对象实例/数据库连接。它可以连接到几个可能的SQL数据库使用可用的PDO驱动程序。目前它支持MySQL、 PostgreSQL、Oracle、Microsoft SQL ...
三层结构分为表示层,业务逻辑层,数据访问层。 我们从三方面对登录实现部分代码进行分析 1、界面控件数据绑定实现 2、逻辑判断实现 3、数据库访问实现
NET平台下通用数据库访问层,实现了SQL,ORACLE,ACCESS,ODBC的数据库的操作,其中存储过程的参数及预处理参数为自动创建
基于C#实现的动态访问Microsoft SQL及其他数据库的访问层类库源码。
某电数据库课程设计大作业 实现一个银行转账系统 需要连接数据库以及设计UI 需要导入第三方库pyqt5 以及 pymysql模块 在进行一个应用系统的开发过程中,从上到下一般需要四个构件:客户端-业务逻辑层-数据访问层-...
分析了传统的基于C/S的两层数据库访问系统所存在的问题 ,介绍了一种基于EJB组件技术的B/S三层体系结构 ,并用一个银行的账户系统的例子简单说明了三层体系结构的划分以及各层之间是怎样协调完成各项任务
通过C++方式实现mysql数据库的访问接口。 CRDBI.h/CRDBI.cpp 访问接口 MySqlHandle.h/MySqlHandle.cpp --支持mysql数据库 OracleHandle.h/OracleHandle.cpp --支持Oracle数据库(可扩充) 另可据此设计框架,实现...
可以直接生成微软企业库方式访问Sql Server数据库的数据库操作类以及实体类。
6.5.5 基于排序的一个简单的连接算法 6.5.6 简单排序连接的分析 6.5.7 一种更有效的基于排序的连接 6.5.8 基于排序的算法小结 习题 6.6 基于散列的两趟算法 6.6.1 通过散列划分关系 6.6.2 基于散列的...
Cetus是由C语言开发的关系型数据库MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实现了数据库层的水平扩展和高可用。
一、实验目的: (1)熟练掌握JDBC操作数据库的整个过程; (2)利用预处理语句操作数据库; (3)掌握可滚动和可更新的结果集的基本操作方法;...(6)初步理解数据访问层的基本设计方法,理解web的分层架构。
C# 数据库三层架构源码20个,数据服务器端和客户端建设,Remoting技术实现数据库服务器,WebService技术实现数据库服务器,用户界面层、业务逻辑层和数据访问层三层框架实例,公司牛人的研发成果,不要错过呀!...
JAVA JDBC实际开发模式(MVC三层架构模式)实现数据库的连接(一)jar包 模型层->控制层->视图层
本文简要介 绍 了工厂 方~...完成了一个通用数据 库访 问层 的设 计与实现 。通过运 用这项技术 ,可提 高项 目灵活性和 可扩展性 ,减 小项 目的相关风险 系数 ,为项 目以后 的升 级或移植作好 了前 期的 准备 。
基于Entity Framework5的通用数据访问层实现,全面数据访问接口,独立数据库,所有数据库都能直接使用
系统架构中的几个层次分别承担不同 的功能,而面向角色的数据库访问控制在每个层次中都有实现,并结合对应的安全策略 及组件来满足数据库访问机制的控制需求。其中,表示层是用户与系统之间的交互接口 ;数据访问层...