ibatis应用
首先,我们需要配置一下SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<properties resource="jdbc.properties" />
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
</dataSource>
</transactionManager>
<sqlMap resource="resource/User.xml" />
</sqlMapConfig>
接下来需要配置我们数据库的配置信息jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db1
username=root
password=root
接下来需要配置数据库sql语句的映射User.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<typeAlias alias="User" type="com.ebiz.entity.User"/>
<select id="findAll" resultClass="User">
SELECT
id,name,real_name,email,address,create_time
From
user
</select>
<select id="findByName" parameterClass="java.lang.String" resultClass="User">
SELECT
id,name,real_name,email,address,create_time
FROM
user
WHERE
name=#name#
</select>
<delete id="deleteById" parameterClass="java.lang.Integer">
DELETE FROM user WHERE id=#id#
</delete>
</sqlMap>
接下来需要自定义entity实体类层,对应的就是数据库里的内容,需要给他们添加set/get方法,最好加上toString,方便自己对代码的检查
接下来需要写对应的UserDAO接口
package com.ebiz.dao;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import com.ebiz.entity.User;
public interface UserDAO {
/**
* 查询所有用户信息
* @return user集合
* @throws SQLException
* @throws IOException
*/
List<User> findAll() throws SQLException, IOException;
/**
* 通过用户名查询用户信息
* @param Name
* @return user集合
* @throws SQLException
* @throws IOException
*/
List<User> findByName(String Name) throws SQLException, IOException;
/**
* 通过页面中多选框的id删除用户
* @param id
* @throws SQLException
* @throws IOException
*/
void deleteById(int id)throws SQLException, IOException;
}
以及接下来与dao层对应的实现类
String config=“SqlMapConfig.xml”;
Reader reader = Resources.getResourceAsReader(config);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
查询时用queryForList方法
List users = sqlMap.queryForList(“findAll”);
做单独的方法时
直接做对应的增删改查的方法
例如:sqlMap.delete(“deleteById”, id);
package com.ebiz.dao.impl;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.ebiz.dao.UserDAO;
import com.ebiz.entity.User;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class UserDAOimpl implements UserDAO{
public List<User> findAll() throws SQLException, IOException {
String config = "SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(config);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
List<User> users = sqlMap.queryForList("findAll");
return users;
}
public List<User> findByName(String name) throws SQLException, IOException {
String config = "SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(config);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
List<User> users = sqlMap.queryForList("findByName",name);
return users;
}
public void deleteById(int id) throws SQLException, IOException {
String config = "SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(config);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
sqlMap.delete("deleteById", id);
}
}
最后需要码servlet
package com.ebiz.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ebiz.dao.UserDAO;
import com.ebiz.dao.impl.UserDAOimpl;
import com.ebiz.entity.User;
/**
* 查询所有用户信息
* @author Administrator
*
*/
public class ListUserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
UserDAO dao = new UserDAOimpl();
try {
List<User> users = dao.findAll();
request.setAttribute("users", users);
request.getRequestDispatcher("list.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
最后,我们需要画前端页面
在这里用jsp技术来实现
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="com.ebiz.entity.User,java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>listUsers</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$("#delete").click(function() {
text = $("input:checkbox[name='message']:checked").map(function(index,elem) {
return $(elem).val();
}).get().join(',');
});
$("#delete").click(function(){
var url = "http://localhost:8080/ibatis/batchdelete";
var data = text;
$.ajax({
url:url,
data:{"aaa":data},
type:"GET",
dataType:"json",
success:function(json){
}
})
});
});
</script>
</head>
<body>
<div id="wrap">
<div id="content">
<h1>用户名</h1>
<form action="select" method="post">
<input type="text" name="username" />
<input type="submit" value="查询" />
</form>
<table class="table">
<div>
<input id="delete" type="button" value="批量删除" onclick="return confirm('确定删除选择项?')" />
</div>
<tr class="table_header">
<td>选择</td>
<td>ID</td>
<td>Name</td>
<td>Real_Name</td>
<td>Email</td>
<td>Address</td>
<td>Create_Time</td>
<td>操作</td>
</tr>
<%
List<User> users = (List<User>) request.getAttribute("users");
for (int i = 0; i < users.size(); i++) {
User user = users.get(i);
%>
<tr class="row<%=i % 2 + 1%>">
<td align="center" class="tc">
<input id="${user.id}" name="message" value="<%=user.getId() %>" on-click="selected(user.id)" type="checkbox">
</td>
<td><%=user.getId()%></td>
<td><%=user.getName()%></td>
<td><%=user.getRealName()%></td>
<td><%=user.getEmail()%></td>
<td><%=user.getAddress()%></td>
<td><%=user.getCreateTime()%></td>
<td><a href="delete?id=<%=user.getId()%>"
onclick="return confirm('确定删除<%=user.getName()%>吗?');">删除</a>
</td>
</tr>
<%
}
%>
</table>
</div>
</div>
</body>
</html>