您的位置:首页 > 编程语言 > Java开发

Java - SpringMVC+iBatis maven工程项目增删改查实例入门+源码

2017-04-21 12:03 676 查看

基础准备

1.环境搭建:

本文是建立在我上一篇博客的基础上进行的:

Java - maven+ibatis+spring mvc环境搭建<点击跳转>

2.技能准备:

Maven - 第三方依赖库管理(类似cocopods)<点击跳转>

SpringMVC - jave web项目的框架<点击跳转>(非常好用,谁用谁知道)

环境配置参考博客:Java-Eclipse使用maven搭建spring mvc

SpringMVC入门程序:Java - SpringMVC基础入门,创建一个HelloWorld程序

mysql数据库入门程序Eclipse链接mysql搭建教程

JQuery的基础:快速入门

JQuery+AjaxJquery+Ajax提交表单与SpringMVC交互传值

—增删改查的效果图如题下,我做了这个demo,让我感觉我对j2ee有了一些了解!



**3.源码预览<认真看一些注释>:

M-V-C对应代码预览

**

Model –实体对象

package com.demo.entity;

public class User {
private Integer id;
private String userName;
private String password;

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}


View – user.jsp页面

—-删除按钮 是form表单提交到控制器

—-修改按钮 是ajax+jquery提交到控制器

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- jstl标签库 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>

<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(function(){
//更新事件
$('.btn').click(function(){
var btn = $(this);
var td = btn.parent();//父级 -->找到td标签 td对应列
var tr = td.parent();//父级 -->找到tr标签 tr对应行
//class 用 .
var u_id = tr.find(".id").val();
//id 用 #
var userName = tr.find("#userName").val();//tr 行里面找对应的列 根据id或者class来找
var pwd = tr.find(".password").val();
//alert("获取到:id = "+u_id+" name :"+userName +" PWD "+pwd);
var data = {
"id" : u_id,
"userName" : userName,
"password" : pwd,
};
$.ajax({
type : "GET",
url : "update",
data : data,
dataType : "json",
contentType : 'application/x-www-form-urlencoded; charset=UTF-8',
success : function(value) {
//提交成功 - 逻辑错误要在这里面判别
alert(value.message); //message 对应Controller里面的update方法返回的Map的key

},
error : function(json) {
alert("这是提交过程中的一些错误(参数获取错误,提交方式get。post与后台不匹配等),不包括逻辑错误");
}
})
});
})
</script>

<body>
<h3>SpringMVC+ibatis  demo</h3>
<div>所有用户:</div>

<form name="input" method="post">
<table border="0.5">
<tr>
<th>id</th>
<th>账号</th>
<th>密码</th>
<th></th>
<th></th>
</tr>
<!-- SpringMVC后台传值 前台遍历展示 user对应User对象-->
<c:forEach var="user" items="${users}"><!-- 头部有导入 jstl标签库 -->
<tr>
<td><input class = "id" name="id" type="text" value=${user.id }></td>
<td><input id = "userName" name="userName" type="text" value=${user.userName }></td>
<td><input class="password" name="password" type="text" value=${user.password }></td>
<td><input value="删除" type="submit"></td>
<td><input class="btn" type = "button" value = "修改"/></td>
</tr>
</c:forEach>
</table>
</form>

<div>=============================================</div>

添加新用户:
<!-- 会对应到Controller里面的insert方法  userName ,password 对应成(SpringMVC框架)User 属性名要一一样-->
<form action="insert" method="post" dir="ltr">
账号:<input name="userName" type="text"><br> 密码:<input
name="password" type="text" value="123456"><br> <input
value="添加" type="submit"><br>
</form>
</body>
</html>


控制器:UserController.java

—–增删改查的逻辑处理

package com.demo.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.demo.entity.User;
import com.demo.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {

@Resource
private UserService userService;

@RequestMapping("/login")
public String login(User user, HttpServletRequest request) {
User resultUser = userService.login(user);
if (resultUser == null) {
request.setAttribute("user", user);
request.setAttribute("errorMsg", "用户名或密码错误!");
return "index";
} else {
HttpSession session = request.getSession();
session.setAttribute("currentUser", resultUser);
return "redirect:/user/users";
}
}

@RequestMapping("/users")
public String query(Map<String, Object> map) {
List<User> resultUser = (List<User>) userService.query();
map.put("users", resultUser);
return "users";
}

@RequestMapping("/insert")
public String insert(User user) {
System.out.print("data" + user.getUserName() + user.getPassword());

Boolean resultBoolean = userService.insertUser(user);
return "redirect:/user/users";
}

@RequestMapping("/delete")
public String deleteUser(User user) {
System.out.print("账号:" + user.getUserName() + "密码:"
+ user.getPassword());

Boolean resultBoolean = userService.deleteUser(user);
return "redirect:/user/users";
}

@RequestMapping(value = "/update", method = RequestMethod.GET)
// 跟ajax的提交方式要一致
@ResponseBody
// 此处不能省略 还要有jackjson依赖库 否则ajax无法解析返回值
public Map<String, String> updateUser(User user) {
System.out.print("id:" + user.getId() + "账号:" + user.getUserName()
+ "密码:" + user.getPassword());

Boolean resultBoolean = userService.updateUser(user);
Map<String, String> map = new HashMap<String, String>();
String result = resultBoolean == true ? "success" : "fail";
map.put("result", result);
map.put("message", "操作成功");
return map;
}
}


控制器里面的数据库操作都是交给Service层来处理!

1.Service层

service是业务层( interface类 + 实现类)- 我的理解是对接Controller与数据层Dao的桥梁 跟中介一样,都是在调用Dao方法,初学者没感觉它牛逼在哪里,可能是在逻辑分离上有突出贡献吧,

2.Dao层

Dao是数据访问层 interface类<依赖注入,下面一点会提到>,说的土一点就是用来获取数据的!跟ios的网络请求一样 去到处去拿数据,那我们这里是跟ibatis<点击看详细>配合

ibatis是数据持久层框架 跟数据库的表做映射 通过配置sql语句映射成一个Model对象, 以前类似的还有Hibernate,但是别人建议我用ibatis或者mybatis!

Dao层接口代码

package com.demo.dao;

import java.util.List;

import com.demo.entity.User;

public interface UserDao {

public User login(User user);
public List<?> queryUsers();
public Boolean insertUser(User user);
public Boolean deleteUser(User user);
public Boolean updateUser(User user);
}


3.ibatis的配置文件预览

*ibatis的配置文件里面的id 都是跟Dao接口层里面的方法名字是对应!!!因为这个id配置里面相当于Dao接口的具体实现方法《依赖注入》

ibatis的配置文件里面要对应到Dao

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.dao.UserDao">

<resultMap type="User" id="UserResult">
<result property="id" column="id"/>
<result property="userName" column="usermame"/>
<result property="password" column="password"/>
</resultMap>

<!-- id 都是对应  com.demo.dao.UserDao类的方法 与参数 -->
<select id="login" parameterType="User" resultMap="UserResult">
select * from User
where
username=#{userName}
and
password=#{password}
</select>

<select id="queryUsers" parameterType="User" resultMap="UserResult">
select * from User
</select>

<insert id="insertUser" parameterType="User" >
insert into User (username, password)
values (#{userName}, #{password})
</insert>

<delete id="deleteUser" parameterType="User" >
delete from User
where
id = #{id};
</delete>

<update id="updateUser" parameterType="User" >
update User
set
username = #{userName},
password = #{password}
where
id = #{id};
</update>

</mapper>


仔细品味文章里面的每个细节!屡一下关系思路,就大体能知道个来龙去脉了

源码下载

点击下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc spring mvc ibatis