因本人也是初学者。。有什么不足的地方,请多指教!!css
简单的实现增删改查功能 html
(由于时间缘由。。没有加注解。。详细注解在案例里边。。有兴趣的朋友能够看一下)前端
案例下载(有注解):https://download.csdn.net/download/qq_36537546/10283007java
首先,先看一下个人工程目录web
1.(1.)User 咱们的Bean 包名:lx.entity(根据本身的习惯定义就能够)spring
package lx.entity; public class User { private int uid; private String uname; private int upass; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public int getUpass() { return upass; } public void setUpass(int upass) { this.upass = upass; } public User(int uid, String uname, int upass) { super(); this.uid = uid; this.uname = uname; this.upass = upass; } public User() { // TODO Auto-generated constructor stub } }
2.UserDao 配置接口 包名:lx.dao(根据本身的习惯定义就能够)sql
package lx.dao; import java.util.List; import lx.entity.User; public interface UserDao { public List<User> findAll(); public int save(User u); public int delete(int id); public int update(User u); public User findById(int id); }
(2)配置 My Batis 配置文件 UserMapper.xml数据库
<?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="lx.dao.UserDao"> <select id="findAll" resultType="User"> select * from user </select> <insert id="save" parameterType="User"> insert into user(uname,upass) values (#{uname},#{upass}) </insert> <delete id="delete" parameterType="int"> delete from user where uid=#{uid} </delete> <update id="update" parameterType="User"> update user set uname=#{uname},upass=#{upass} where uid=#{uid} </update> <select id="findById" parameterType="int" resultType="User"> select * from user where uid=#{uid} </select> </mapper>
3.UserDaoImpl 配置实现类 包名:lx.dao.impl(根据本身的习惯定义就能够)spring-mvc
SSM采用注解的方式进行扫描,不须要写复杂的步骤,只须要用对象获取他的方法session
package lx.dao.impl; import java.util.List; import lx.dao.UserDao; import lx.entity.User; import org.springframework.beans.factory.annotation.Autowired; public class UserDaoImpl implements UserDao{ @Autowired private UserDao user; public List<User> findAll() { // TODO Auto-generated method stub return user.findAll(); } public int save(User u) { // TODO Auto-generated method stub return user.save(u); } public int delete(int id) { // TODO Auto-generated method stub return user.delete(id); } public int update(User u) { // TODO Auto-generated method stub return user.update(u); } public User findById(int id) { // TODO Auto-generated method stub return user.findById(id); } }
4.UserSerivce 配置咱们的业务逻辑层 包名:lx.service(根据本身的习惯定义就能够)
service层的接口与dao层同样
package lx.service; import java.util.List; import lx.entity.User; public interface UserSerivce { public List<User> findAll(); public boolean save(User u); public boolean delete(int id); public boolean update(User u); public User findById(int id); }
5.UserServiceImpl 包名:lx.service.Impl(根据本身的习惯定义就能够)
package lx.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lx.dao.UserDao; import lx.entity.User; import lx.service.UserSerivce; @Service public class UserServiceImpl implements UserSerivce{ @Autowired private UserDao usi; public List<User> findAll() { // TODO Auto-generated method stub return usi.findAll(); } public boolean save(User u) { // TODO Auto-generated method stub int a=usi.save(u); if(a==1){ return true; }else{ return false; } } public boolean delete(int id) { // TODO Auto-generated method stub int a=usi.delete(id); if(a==1){ return true; }else{ return false; } } public boolean update(User u) { // TODO Auto-generated method stub int a=usi.update(u); if(a==1){ return true; }else{ return false; } } public User findById(int id) { // TODO Auto-generated method stub return usi.findById(id); } }
6.UserAction 包名:lx.action(根据本身的习惯定义就能够)
package lx.action; import lx.entity.User; import lx.service.UserSerivce; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class UserAction { @Autowired private UserSerivce user; @RequestMapping(value="showuser") public ModelAndView find(){ //先new一个ModelAndView对象 ModelAndView mav=new ModelAndView(); //以键值队的形式赋值 而后用对象调用方法 mav.addObject("user",user.findAll()); //要跳转的页面 mav.setViewName("list_user"); //return出来你new的对象 return mav; } //增长 @RequestMapping(value="saveuser") public ModelAndView save(User u){ user.save(u); return new ModelAndView("redirect:/showuser.do"); } //删除 @RequestMapping(value="deleteuser") public ModelAndView delete(int id){ user.delete(id); return new ModelAndView("redirect:/showuser.do"); } //预修改 @RequestMapping(value="preupdateuser") public ModelAndView preupdate(int id){ ModelAndView mav=new ModelAndView(); mav.addObject("user", user.findById(id)); mav.setViewName("update_user"); return mav; } //修改 @RequestMapping(value="updateuser") public ModelAndView update(User u){ user.update(u); return new ModelAndView("redirect:/showuser.do"); } }
7.配置MyBatis的配置文件 MyBatisConf.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="User" type="lx.entity.User"/> </typeAliases> <!-- 配置Mapper文件的路径 --> <mappers> <mapper resource="lx/dao/UserMapper.xml"/> </mappers> </configuration>
(2)Spring MVC的配置文件
SpringConf.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- 读取解析properties文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > <property name="location"> <value>classpath:jdbc.properties</value> </property> </bean> <!-- 配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 配置数据库链接 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 获得数据源 --> <property name="dataSource" ref="dataSource" /> <!-- 加载MyBatis配置 --> <property name="configLocation" value="classpath:MyBatisConf.xml" /> <!-- 它通常对应咱们的实体类所在的包,这个时候会自动取对应包中不包括包名的简单类名做为包括包名的别名。 多个package之间能够用逗号或者分号等来进行分隔。(value的值必定要是包的全名) --> <property name="typeAliasesPackage" value="lx.entity" /> </bean> <!-- 注入映射器 为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码, MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可让你直接注入数据映射器接口到你的 service 层 bean 中。 当使用映射器时,你仅仅如调 用你的 DAO 同样调用它们就能够了,可是你不须要编写任何 DAO 实现的代码,由于 MyBatis-Spring 将会为你建立代理。 使用注入的映射器代码,在 MyBatis,Spring 或 MyBatis-Spring 上面不会有直接的依赖。 MapperFactoryBean 建立的代理控制开放和关闭 session,翻译任意的异常到 Spring 的 DataAccessException 异常中。 此外,若是须要或参与到一个已经存在活动事务中,代理将 会开启一个新的 Spring 事务。 --> <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="lx.dao.UserDao" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <!-- 自动扫描注解的bean --> <context:component-scan base-package="lx.*" /> </beans>
SpringMVC-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <mvc:annotation-driven/> <!-- HandlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- HandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!--扫描 @Controller注解的action --> <context:component-scan base-package="lx.*" /> <!-- 对模型视图名称的解析,即在模型视图名称添加先后缀 --> <!-- ViewResolver 视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/"/> <!-- 视图路径 --> <property name="suffix" value=".jsp"/> <!-- 视图后缀名 --> </bean> </beans>
JSP页面部分:
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <a href="showuser.do">查询</a> </body> </html>
list_user.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'list_user.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <table border="1"> <tr> <td>编号</td> <td>用户名</td> <td>密码</td> <td>可执行操做</td> </tr> <c:forEach var="user" items="${user}"> <tr> <td>${user.uid}</td> <td>${user.uname}</td> <td>${user.upass}</td> <td> <a href="save_user.jsp">增长</a> <a href="deleteuser.do?id=${user.uid}">删除</a> <a href="preupdateuser.do?id=${user.uid}">修改</a> </td> </tr> </c:forEach> </table> </body> </html>
save_user.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'save_user.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="saveuser.do"> 用户名:<input type="text" name="uname" /> <br> 密码:<input type="text" name="upass" /> <br> <input type="submit" value="点击提交" /> </form> </body> </html>
update_user.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'update_user.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="updateuser.do"> 编号:<input type="text" value="${user.uid}" name="uid" /> <br> 用户名:<input type="text" value="${user.uname}" name="uname" /> <br> 密码:<input type="text" value="${user.upass}" name="upass" /> <br> <input type="submit" value="点击修改" /> </form> </body> </html> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="updateuser.do"> 编号:<input type="text" value="${user.uid}" name="uid" /> <br> 用户名:<input type="text" value="${user.uname}" name="uname" /> <br> 密码:<input type="text" value="${user.upass}" name="upass" /> <br> <input type="submit" value="点击修改" /> </form> </body> </html>
补!web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!-- 加载 spring --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:SpringConf.xml</param-value> </context-param> <!-- spring mvc 前端控制器 --> <servlet> <servlet-name>MyDispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:SpringMVC-servlet.xml</param-value> </init-param> <!-- 标记容器是否在启动的时候就加载这个servlet。 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet; 当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。 正数的值越小,启动该servlet的优先级越高。 --> <load-on-startup>1</load-on-startup> </servlet> <!-- spring mvc 配置结束 --> <!-- spring mvc 拦截 --> <servlet-mapping> <servlet-name>MyDispatcher</servlet-name> <!-- /拦截全部请求 --> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- spring mvc 拦截结束 --> <!-- spring mvc 过滤解决中文乱码 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
本文没有看明白的地方能够下载案例(有注解) 附带JAR包:
案例的连接:点击下载
博主QQ:3044793043
欢迎讨论,互相学习