既然是分层开发,首先我们需要知道的是分为那几个层,并且是干什么的?

1.实体层(entity) 对应数据库中的一张表,有了它可以降低耦合性,同时也是数据的载体.

2.数据访问对象(data access object)主要包含两个java源文件,一个是BaseBao,还有一个是所需要查询表的接口

  1. package cn.news.dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8.  
  9. import org.junit.Test;
  10.  
  11. /**
  12. * 数据访问工具类
  13. * @version 1.1
  14. * @author happy
  15. *
  16. */
  17. public class BaseDao {
  18. private static final String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
  19. private static final String url="jdbc:sqlserver://localhost:1433;DataBaseName=s2223";
  20. private static final String username="sa";
  21. private static final String pwd="6375196";
  22.  
  23. Connection con=null;
  24. PreparedStatement ps=null;
  25. ResultSet rs=null;
  26. //01.写一个用户获取到一个连接对象的方法,方法的返回值是Connection类型
  27. /**
  28. * 01.写一个用户获取到一个连接对象的方法,方法的返回值是Connection类型
  29. * @return 连接对象
  30. * @throws Exception
  31. */
  32. public Connection getConnection() throws Exception{
  33. Class.forName(driver);
  34. //什么条件下,构建connection对象
  35. if (con==null||con.isClosed()) {
  36. con=DriverManager.getConnection(url, username, pwd);
  37. }
  38. //同志们碰到一个
  39. return con;
  40. }
  41.  
  42. //单元测试
  43. //java junit
  44. @Test
  45. public void testQuery() throws Exception{
  46. ResultSet rs = executeQuery("select * from student");
  47. if(rs!=null){
  48. while (rs.next()) {
  49. String name = rs.getString("sname");
  50. System.out.println(name);
  51. }
  52. }
  53. }
  54. //测试添加
  55. @Test
  56. public void testUpdate() throws Exception{
  57. int count= executeUpdate("update student set sname='大强' where sname='黄强'");
  58. System.out.println(count);
  59. }
  60.  
  61. //执行查询操作 目的:返回一个读取器
  62. /**
  63. * 执行查询操作 目的:返回一个读取器
  64. * @param sql sql语句
  65. * @param objs 参数列表
  66. * @return 读取器对象
  67. * @throws Exception
  68. */
  69. public ResultSet executeQuery(String sql,Object... objs) throws Exception{
  70. con=getConnection();
  71. ps = con.prepareStatement(sql);
  72. for (int i = 0; i < objs.length; i++) {
  73. ps.setObject(i+1, objs[i]);
  74. }
  75. rs= ps.executeQuery();
  76. return rs;
  77. }
  78.  
  79. //执行增删该操作
  80. /**
  81. * 执行增删该操作
  82. * @param sql sql语句
  83. * @param objs 参数列表
  84. * @return 受影响行数
  85. * @throws Exception
  86. */
  87. public int executeUpdate(String sql,Object... objs) throws Exception{
  88. con=getConnection();
  89. ps = con.prepareStatement(sql);
  90. for (int i = 0; i < objs.length; i++) {
  91. ps.setObject(i+1, objs[i]);
  92. }
  93. int count = ps.executeUpdate();
  94. return count;
  95. }
  96.  
  97. //2.回收连接资源
  98. /**
  99. * 回收连接资源
  100. * @throws Exception
  101. */
  102. public void closeAll() throws Exception{
  103. if(rs!=null){
  104. rs.close();
  105. }
  106. if (ps!=null) {
  107. ps.close();
  108. }
  109. if(con!=null){
  110. con.close();
  111. }
  112.  
  113. }
  114.  
  115. }

3.数据访问层的

java分层开发的更多相关文章

  1. java的分层开发

    既然是分层开发,首先我们需要知道的是分为那几个层,并且是干什么的? 1.实体层(entity) 对应数据库中的一张表,有了它可以降低耦合性,同时也是数据的载体. 2.数据访问对象(data acces ...

  2. 【原创】三分钟教你学会MVC框架——基于java web开发(2)

    没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...

  3. Java Web开发之详解JSP

    JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用, ...

  4. Java分层概念(转)

    Java分层概念(转) 对于分层的概念,似乎之间简单的三层,多了,就有点难以区分了,所以收藏了这个. ervice是业务层 action层即作为控制器 DAO (Data Access Object) ...

  5. java web 开发三剑客 -------电子书

    Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...

  6. 规范——Java后端开发规范

    Java后端开发规范 一.技术栈规约 二.命名规范 三.Java代码规范(注释规范.异常与日志.代码逻辑规范) 四.Mybatis与SQL规范 五.结果检查(单元测试及代码扫描) 六.安全规范 一.技 ...

  7. Java分层思想

    从最常规的分层结构来说,系统层次从上到下依次为: 表现层/UI层/界面层:主要是客户端的展示. 服务层/业务层:直接为客户端提供的服务或功能.也是系统所能对外提供的功能. 领域层:系统内的领域活动. ...

  8. 5款强大的Java Web开发工具

    1.WebBuilder这是一款开源的可视化Web应用开发和运行平台.基于浏览器的集成开发环境,采用可视化的设计模式,支持控件的拖拽操作,能轻松完成前后台应用开发:高效.稳定和可扩展的特点,适合复杂企 ...

  9. Mac OS X上IntelliJ IDEA 13与Tomcat 8的Java Web开发环境搭建

    这标题实在有点拗口,不知道怎么写好,但看了标题也就明白文本的内容.最近几天在折腾这些玩意儿,所以写写总结.除了环境搭建,本文还是一篇入门级的上手教程. 去下载一些东西 JDK安装 Tomcat安装 T ...

随机推荐

  1. pdo mysql错误:Cannot execute queries while other unbuffered queries are active

    运行环境:PHP 5.5.30-x64,MYSQL  5.6.27 错误代码:Cannot execute queries while other unbuffered queries are act ...

  2. Shapely中的几何图形操作

    Geometric Objects object.area Returns the area (float) of the object. object.bounds Returns a (minx, ...

  3. xmpp整理笔记:xmppFramework框架的导入和介绍

    一个将要开发xmpp的项目,建议在项目刚创建就导入框架,这样可以避免一些自己操作失误造成不必要的损失. xmpp中最常用的框架就是 xmppFrameWork 往期回顾: xmpp整理笔记:环境的快速 ...

  4. Android项目实战(十九):Android Studio 优秀插件: Parcelable Code Generator

    Android Studio 优秀插件系列: Android Studio 优秀插件(一):GsonFormat Android Studio 优秀插件(二): Parcelable Code Gen ...

  5. 【C语言】C语言运算符

    目录: [算术运算符] [自增运算符] [自减运算符] [关系运算符] [逻辑运算符] [三目运算符] [sizeof运算符] · 作用 1.算术运算符 +(加).-(减).*(乘)./(除).%(取 ...

  6. 如何使用SSL pinning来使你的iOS APP更加安全

    SSL pinning在构建一个高度安全的移动APP上扮演了一个十分重要的角色.然而如今好多用户在使用无线移动设备去访问无数不安全的无线网络. 这篇文章主要覆盖了SSL pinning 技术,来帮助我 ...

  7. 【代码笔记】iOS-将log日志保存到文件

    代码: #import "AppDelegate.h" #import "RootViewController.h" @implementation AppDe ...

  8. js 获取当前系统时间

    Js获取当前日期时间及其它操作 var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年 ...

  9. TypeId和IidManager关系

    IidInformation结构 数据类型 名字 string name TypeId::hash_t hash uint16_t parent string groupName size_t siz ...

  10. 透过byte数组简单分析Java序列化、Kryo、ProtoBuf序列化

    序列化在高性能网络编程.分布式系统开发中是举足轻重的之前有用过Java序列化.ProtocolBuffer等,在这篇文章这里中简单分析序列化后的byte数组观察各种序列化的差异与性能,这里主要分析Ja ...