SSM增删改查

1,创建web工程

2,导入jar包

3,创建User数据库

4.编写实体类pojo

package cn.ssm.pojo;

public class User {
	private int id;
	private String userName;
	private String pwd;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	
}

        dao层

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="cn.ssm.dao.UserMapper">
	
	<select id="getUser" resultType="cn.ssm.pojo.User" parameterType="cn.ssm.pojo.User">
		<![CDATA[
			select * from user where id=#{id}
		]]>
	</select>
	<select id="getUserList" resultType="cn.ssm.pojo.User">
		<![CDATA[ 
			select * from user
		 ]]>
	</select>
	
	<insert id="saveUser" parameterType="cn.ssm.pojo.User">
		<![CDATA[
			insert into user(userName,pwd)
				values(#{userName},#{pwd})
		]]>
	</insert>
	
	<delete id="deleteUser" parameterType="cn.ssm.pojo.User">
		<![CDATA[
			delete from user where id=#{id}
		]]>
	</delete>
	
	<update id="updateUser" parameterType="cn.ssm.pojo.User">
		<![CDATA[
			update user set userName=#{userName},
				pwd=#{pwd} where id=#{id}
		]]>
	</update>
</mapper>

UserMapper

package cn.ssm.dao;

import java.util.List;


import cn.ssm.pojo.User;

public interface UserMapper {
	public void add(User user);
	
	public void delete(User user);
	
	public void Update(User user);
	
	public List<User> getUserList();
	
	public User getUser(User user);
}	

daoImpl

package cn.ssm.dao.impl;

import java.util.List;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import cn.ssm.dao.UserMapper;
import cn.ssm.pojo.User;

public class UserDaoImpl extends SqlSessionDaoSupport implements UserMapper{

	private static final String NAMESPACE = "cn.ssm.dao.UserMapper.";
	
	public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory)
    {
        super.setSqlSessionFactory(sqlSessionFactory);
    }
	
	@Override
	public void add(User user) {
		// TODO Auto-generated method stub
		getSqlSession().insert(NAMESPACE + "saveUser",user);
	}

	@Override
	public void delete(User user) {
		// TODO Auto-generated method stub
		getSqlSession().delete(NAMESPACE + "deleteUser",user);
	}

	@Override
	public void Update(User user) {
		// TODO Auto-generated method stub
		getSqlSession().update(NAMESPACE + "updateUser",user);
	}

	@Override
	public List<User> getUserList() {
		// TODO Auto-generated method stub
		return getSqlSession().selectList(NAMESPACE + "getUserList");
	}

	@Override
	public User getUser(User user) {
		// TODO Auto-generated method stub
		return getSqlSession().selectOne(NAMESPACE + "getUser",user);
	}

}

        Service层

iService

package cn.ssm.service;

import java.util.List;

import cn.ssm.pojo.User;

public interface IService {
public void add(User user);
	
	public void delete(User user);
	
	public void Update(User user);
	
	public List<User> getUserList();
	
	public User getUser(User user); 
}

iServiceImpl

package cn.ssm.service.impl;

import java.util.ArrayList;
import java.util.List;

import cn.ssm.dao.UserMapper;
import cn.ssm.pojo.User;
import cn.ssm.service.IService;

public class IServiceImpl implements IService{

	private UserMapper userMapper;
	
	public UserMapper getUserMapper() {
		return userMapper;
	}

	public void setUserMapper(UserMapper userMapper) {
		this.userMapper = userMapper;
	}

	@Override
	public void add(User user) {
		// TODO Auto-generated method stub
		userMapper.add(user);
	}

	@Override
	public void delete(User user) {
		// TODO Auto-generated method stub
		userMapper.delete(user);
	}

	@Override
	public void Update(User user) {
		// TODO Auto-generated method stub
		userMapper.Update(user);
	}

	@Override
	public List<User> getUserList() {
		// TODO Auto-generated method stub
		List<User> list= new ArrayList<User>();
		list=userMapper.getUserList();
		return list;
	}

	@Override
	public User getUser(User user) {
		// TODO Auto-generated method stub
		return userMapper.getUser(user);
	}

}

        controller

UserController

package cn.ssm.controller;

import java.util.ArrayList;
import java.util.List;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import cn.ssm.pojo.User;
import cn.ssm.service.IService;

@Controller
//@RequestMapping("/user")
public class UserController {
	
	//@Autowired
	//Qualifier 指定某个service注入  
	@Resource
	@Qualifier("userMapperService")
	
	private IService i;
	private User user;
	private List<User> list = new ArrayList<User>();
	
	
	//根据ID查看
	@RequestMapping(value="/view",method=RequestMethod.GET)
	public String view(HttpServletRequest request,Model model){
		int id= Integer.parseInt(request.getParameter("id"));
		user=new User();
		user.setId(id);
		user=i.getUser(user);
		model.addAttribute("user",user);
		return "view";
	}
	
	//列表查看
	@RequestMapping(value="/userList",method=RequestMethod.GET)
	public String list(Model model){		
		list=i.getUserList();
		model.addAttribute("list",list);
		return "userList";
	}
	//添加界面
	@RequestMapping(value="/saveView",method=RequestMethod.GET)
	public String saveView(@ModelAttribute("user") User user){		
		return "saveView";
	}
	//添加操作
	@RequestMapping(value="/saveOper",method=RequestMethod.POST)
	public String saveOper(User user){
		i.add(user);
		return "redirect:/userList";
	}
	//删除操作
	@RequestMapping(value="/delete",method=RequestMethod.GET)
	public String delete(HttpServletRequest request){
		int id= Integer.parseInt(request.getParameter("id"));
		user=new User();
		user.setId(id);
		i.delete(user);
		return "redirect:/userList";
	}
	//修改界面
	@RequestMapping(value="/updateView",method=RequestMethod.GET)
	public String updateView(Model model,HttpServletRequest request){
		int id= Integer.parseInt(request.getParameter("id"));
		user=new User();
		user.setId(id);
		user=i.getUser(user);
		model.addAttribute("user",user);
		return "updateView";
	}
	//修改操作
	@RequestMapping(value="/updateOper",method=RequestMethod.POST)
	public String updateOper(User user){		
		i.Update(user);
		return "redirect:/userList";
	}
	
	public List<User> getList() {
		return list;
	}

	public void setList(List<User> list) {
		this.list = list;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public IService getI() {
		return i;
	}

	public void setI(IService i) {
		this.i = i;
	}
}

6,配置文件

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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SSM</display-name>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 设置Spring容器加载所有的配置文件的路径 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mybatis.xml</param-value>
    </context-param>

    <!-- 配置SpringMVC核心控制器 -->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 启动加载一次 -->  
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--为DispatcherServlet建立映射 -->
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- 防止Spring内存溢出监听器 -->
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>

    <!-- 解决工程编码过滤器 -->
    <filter>
        <filter-name>encodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

jdbc.properties

jdbcUrl=jdbc:mysql://127.0.0.1/lkx-ssm?characterEncoding=UTF-8
driverClass=com.mysql.jdbc.Driver
user=root
password=970307

mybatis-config.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>
	
	<!-- 实体类的别名,写了之后可以在写Sql配置文件例如<select>标签中的属性就可以不用写实体的具体路径直接用别名 -->
	<typeAliases>
		 <typeAlias type="cn.ssm.pojo.User" alias="User"/>
		<!--..... -->
		<!-- <package name="cn.ssm.pojo"/> -->
	</typeAliases>
</configuration>

spring-mybatis.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:mvc="http://www.springframework.org/schema/mvc"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:aop="http://www.springframework.org/schema/aop" 
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
 
     <!-- 自动扫描 -->  
     <context:component-scan base-package="cn.ssm"></context:component-scan>
     
     <!-- 配置数据源 -->
     <context:property-placeholder location="classpath:jdbc.properties"/>
     
     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    	<property name="jdbcUrl" value="${jdbcUrl}"></property>
    	<property name="driverClass" value="${driverClass}"></property>
    	<property name="user" value="${user}"></property>
   	 	<property name="password" value="${password}"></property> 
 	 </bean>
 	 
 	 <!-- 创建sqlSessionFactory,生成sqlSession -->
     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- 自动扫描mapping.xml文件 -->  
        <property name="mapperLocations" value="classpath:cn/ssm/dao/*.xml"></property>  
     </bean>  
    
    <!-- 配置sqlSessionTemplate -->   
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    	<!-- spring 使用构造器 进行注入-->
    	<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
    </bean>
    
    <!-- 把sqlSessionTemplate注入到测试类,进行测试 -->
    <bean id="daoTest" class="cn.ssm.test.daoTest">
    	<property name="sqlSessionTemplate" ref="sqlSessionTemplate"></property>
    </bean>
    
     <!-- 配置mybatis接口代理开发
   	 	* 接口类名和映射文件必须同名
    	* 接口类和映射文件必须在同一个目录 下
    	* 映射文件namespace名字必须是接口的全类路径名
    	* 接口的方法名必须和映射Statement的id一致
   	-->
   	<!-- dao层注入 -->
   	<bean id="userMapper" class="cn.ssm.dao.impl.UserDaoImpl">
   		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
   	</bean>
   	
   	<!-- service层注入 -->
   	<bean id="userMapperService" class="cn.ssm.service.impl.IServiceImpl">
   		<property name="userMapper" ref="userMapper"></property>
   	</bean>

   	
   	<!-- controller注入 -->
   	<bean id="userController" class="cn.ssm.controller.UserController">
   		<property name="i" ref="userMapperService"></property>
   		<property name="user">
				<bean class="cn.ssm.pojo.User"></bean>
		</property>
   	</bean>
   	
   	<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  
    <bean id="transactionManager"  
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  
</beans>

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans 
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        
        
    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->  
    <context:component-scan base-package="cn.ssm.controller" />  
    <mvc:annotation-driven/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->  
        <property name="prefix" value="/jsp/" />  
        <property name="suffix" value=".jsp" />  
    </bean>  
</beans>

7, JSP

userList.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ 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>
<body>
<h1>----UserList----</h1><br/>
<a href="saveView">添加</a>
<table border="1">
		<tr>
			<td>id</td>
			<td>name</td>
			<td>操作</td>
		</tr>
	<c:forEach var="ul" items="${list}">
		
		<tr>
			<td>${ul.id }</td>
			<td><a href="view?id=${ul.id}">${ul.userName }</a></td>
			<td>
				<a href="delete?id=${ul.id}">删除</a>
				<a href="updateView?id=${ul.id }">修改</a>
			</td>
		</tr>
		
	</c:forEach>
</table>
</body>
</html>

view.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="f" uri="http://www.springframework.org/tags/form" %>
<!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>
<body>
<h1>----View----</h1><br/>
	ID:${user.id }<br/>
	NAME:${user.userName }<br/>
	PWD:${user.pwd}
</body>
</html>

saveView.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="f" uri="http://www.springframework.org/tags/form" %>
<!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>
<body>
<h1>----SAVE----</h1><br/>
	<f:form method="post" action="saveOper" modelAttribute="user" >
		NAME:<f:input path="userName"/>
		PWD:<f:input path="pwd"/>
		<input type="submit" value="保存"/>
	</f:form>
</body>
</html>

updateView.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>
<body>
<h1>----updateView----</h1><br/>
	<form action="updateOper" method="post">
		ID:<input name="id" value="${user.id }" readonly="readonly"/><br/>
		NAME:<input name="userName" value="${user.userName }"/><br/>
		PWD:<input name="pwd" value="${user.pwd }"/><br/>
		<input type="submit" value="保存"/>
	</form>
</body>
</html>

猜你喜欢

转载自my.oschina.net/u/3569028/blog/1539838