Mybatis前奏【Java Web 开发进化史】——万丈高楼从JDBC开始

时间:2023-02-08 12:42:12

     最初进行java web 开发是从界面JSP,数据JDBC ,中间夹个SERVLET 完成。这样开发模式毋庸置疑,三个字:相当练手!从数据库连接,到sql语句拼接;业务逻辑的实现均由我们程序猿一板砖一板砖的垒。重复的代码多了,开始谋划抽象,代码复用;连复用都觉得复杂了,便出现了这么一群人创造了框架……从此大多程序猿都走在了基于框架开发的康庄大道上。回顾java web开发史,最初是这样的。

 Mybatis前奏【Java Web 开发进化史】——万丈高楼从JDBC开始

     三者作为J2EE企业级开发13规范之三,撑起了java web 开发的顶梁柱基层工作;三者分别致力于前台界面、中间数据传输、数据持久化三个方面,面面相扣,一经整合,一个用java语言开发的界面跃然于浏览器之上。

其中最经典代码授予以下三块,从下到上:

1、JDBC创建数据库连接,操作数据

<span style="font-family:Comic Sans MS;">public List<Message> queryMsgList(String command,String description)
{
List<Message> msgList=new ArrayList<Message>();
try
{
//JDBC创建数据库连接
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection

("jdbc:mysql://127.0.0.1:3306/wechat","root","123456");
StringBuffer sql=new StringBuffer("select

Id,command,content,description from message where 1=1");
List<String> paraList=new ArrayList<String>();
if(command!=null && !"".equals(command.trim()))
{
sql.append(" and command=?");
paraList.add(command);
}

if(description!=null && !"".equals(description.trim()))
{
sql.append(" and description like '%' ? '%'");
paraList.add(description);
System.out.print(sql);
}

PreparedStatement pstmt=conn.prepareStatement(sql.toString

());
for(int i=0;i<paraList.size();i++)
{
pstmt.setString(i+1, paraList.get(i));
System.out.print(pstmt);

}
//根据传递参数,拼接sql语句,执行数据库CRUD操作
ResultSet rs=pstmt.executeQuery();

while(rs.next())
{
Message msg=new Message();
msg.setId(rs.getInt("Id"));
msg.setCommand(rs.getString("command"));
msg.setContent(rs.getString("content"));
msg.setDescription(rs.getString("description"));
msgList.add(msg);
}
}
catch (Exception e) {
e.printStackTrace();
}
return msgList;</span>
2、 servlet 获取jsp页面参数传递;调用业务层,返回jsp页面回显数据;跳转页面

<span style="font-family:Comic Sans MS;font-size:14px;">@SuppressWarnings("serial")
public class ListServlet extends HttpServlet{
//private MessageService msgService;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取jsp页面参数传递
req.setCharacterEncoding("UTF-8");
String command=req.getParameter("command");
String description=req.getParameter("description");

//调用service,返回jsp页面回显数据
req.setAttribute("command", command);
req.setAttribute("description",description);

MessageService msgService=new MessageService();
List<Message> msgList=msgService.queryMsgList(command,

description);

req.setAttribute("msgList", msgList);
//跳转
req.getRequestDispatcher("/WEB-INF/jsp/List.jsp").forward

(req,resp);
}

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//HTTP method GET is not supported by this URL
//子类重写,去掉super.doGet()
doGet(req, resp);
}
}</span>

3、web.xml配置servlet路径和映射

<span style="font-family:Comic Sans MS;"><servlet>
<servlet-name>ListServlet</servlet-name>
<servlet-class>cn.max.servlet.ListServlet</servlet-class>
</servlet>

<servlet-mapping></span>
<span style="font-family:Comic Sans MS;"><servlet-name>ListServlet</servlet-name>
<url-pattern>/List.action</url-pattern>
</servlet-mapping></span>

     经过无数行代码的历练后,各个聪明的程序猿创造出“框架”;将那些经常的、重复的操作封装到框架之中,例如JDBC数据库连接、数据库增删改查操作,都封装了一套自己的框架。数据层框架在java统一规范JPA的基础之上进行实现,于是hibernate、toplink等等对象关系映射框架【ORM】应运而生。同时也出现了前端struts、spring mvc等轻量级框架负责处理jsp页面数据交互。

 

     有了框架之后的日子——mybatis即将粉墨登场尽情期待