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+Ajax:Jquery+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+ibatis+mysql的组合框架入门实例demo源码下载
- SI 系列入门 之 手把手构建 Maven Spring MVC 工程
- java springmvc mybaits maven shiro mysql 后台框架源码bootstrap
- SSM框架 SSM项目源码 SSM源码 下载 java框架整合Springmvc+mybatis+s
- Intellij IDEA采用Maven+Spring MVC+Hibernate的架构搭建一个java web项目
- java SSM(Spring+SpringMVC+MyBatis)maven项目 intellij idea 2017配置 MAC,(Linux,ubuntu,centos 只要更改相应目录即可)
- java项目案例 java项目源码 java后台框架源码 企业级 SpringMVC mybatis or hibernate
- JAVA学习6:用Maven创建Spring3 MVC项目
- java快速开发平台 二次开发 外包项目利器 springmvc SS-M后台框架源码 (转载)
- maven+jquery+ajax+springmvc+mybatis项目实例
- 嵌入百度UEditor到JAVA+MAVEN+SpringMVC项目中
- 简单MVC项目搭建--Java1.7+Eclipse luna + Maven 3.2.5 +spring 4.1.4
- SpringMVC+Mybatis框架整合java源码 maven mysql
- java springmvc mybaits maven shiro mysql 后台框架源码bootstrap
- MVC项目搭建--Java1.7+Eclipse luna + Maven 3.2.5 +spring 4.1.4
- java后台框架源码 springmvc mybatis oracle mysql maven
- java springmvc mybaits maven shiro mysql 后台框架源码bootstrap
- 记录-项目java项目框架搭建的一些问题(maven+spring+springmvc+mybatis)
- Java后台开发<二>:Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
- 基于maven的springmvc+mybatis的javaweb项目