SpringMVC+Spring+Mybatis的封裝

 

1.需要用的jar包

 

2.配置文件

(1)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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_9" version="2.4">
	<filter>
		<description>
		</description>
		<display-name>EncodeFilter</display-name>
		<filter-name>EncodeFilter</filter-name>
		<filter-class>com.school.filter.EncodeFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>EncodeFilter</filter-name>
		<url-pattern>/EncodeFilter</url-pattern>
	</filter-mapping>
<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:application.xml</param-value>
	</context-param>
	<servlet>
		<servlet-name>app1</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>app1</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
</web-app>

(2)springmvc.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: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/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.school.control"></context:component-scan>
<mvc:annotation-driven />
<!-- 使用默認的Servlet來響應靜態文件 -->
<mvc:default-servlet-handler />
</beans>

(3)mybatis.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>
<!-- 
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/neu"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
-->
    <settings>
        <!-- 打印查詢語句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
<mappers>
<mapper resource="com/school/mapper/StuInfoMapper.xml"/>
<mapper resource="com/school/mapper/CpyInfoMapper.xml"/>
</mappers>
</configuration>

(4)application.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:mybatis="http://mybatis.org/schema/mybatis-spring"
	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://mybatis.org/schema/mybatis-spring
	http://mybatis.org/schema/mybatis-spring-1.2.xsd">
	<context:component-scan base-package="com.school.control,com.school.service,com.school.test"></context:component-scan>
	<mybatis:scan base-package="com.school.mapper"/>
	<!-- 把class指定的類創建一個對象,注入到類中
	<bean id="stuInfoDao" class="com.neuedu.daoa.StuInfoImpl">
	</bean>
	 -->
	 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>	
		<property name="url" value="jdbc:mysql://localhost:3306/employment"></property>
		<property name="username" value="SYC"></property>
		<property name="password" value="123456"></property>
	</bean>
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocation" value="classpath:mybatis.xml"></property>
	</bean>
</beans>

3.Service

package com.school.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.school.mapper.StuInfoMapper;

//每個方法,是一個業務;一個業務可能會對多個表進行操作--》調用多個Mapper的多個方法
@Service
public class StuInfoService {
	@Autowired
	private StuInfoMapper stuInfoMapper;

	public List<Map<String, Object>> findAll() {

		List<Map<String, Object>> list = stuInfoMapper.findAll();

		return list;
	}

	public List<Map<String, Object>> findStuJob() {

		List<Map<String, Object>> list = stuInfoMapper.findStuJob();

		return list;
	}

	public List<Map<String, Object>> findByCondition(String condition) {

		List<Map<String, Object>> list = stuInfoMapper.findByName(condition);

		return list;
	}

	public List<Map<String, Object>> findJobByCondition(String condition) {

		List<Map<String, Object>> list = stuInfoMapper.findJobByCondition(condition);

		return list;
	}

	public void delOne(String id) {

		stuInfoMapper.delOne(id);
	}

	public void addStu(Map<String, Object> map) {

		stuInfoMapper.save(map);
	}

	public Map<String, Object> findById(String id) {

		List<Map<String, Object>> list = stuInfoMapper.findById(id);
		if (list.size() == 1)
			return list.get(0);
		else {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("errMsg", "id不匹配" + "num=" + list.size());
			return map;
		}
	}

	public void updateStu(Map<String, Object> map) {
		stuInfoMapper.update(map);
	}

	public void checkStu(String id) {
		stuInfoMapper.checkStu(id);
	}

	public List<Map<String, Object>> findByDPro(Map<String, Object> map) {

		return stuInfoMapper.findByDPro(map);
	}

	public void addUser(String id) {
		stuInfoMapper.addUser(id);
	}
}

4.Mapper

(1)接口

package com.school.mapper;

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

import org.apache.ibatis.annotations.Param;

public interface StuInfoMapper {
	// 與映射文件中的方法匹配
	public List<Map<String, Object>> findAll();
	
	public List<Map<String, Object>> findStuJob();

	public void update(Map<String, Object> map);

	public List<Map<String, Object>> findByDPro(Map<String, Object> map);
	
	public List<Map<String, Object>> findByName(@Param(value="condition")String condition);
	
	public List<Map<String, Object>> findJobByCondition(@Param(value="condition")String condition);

	public void delOne(String id);

	public void save(Map<String, Object> map);

	public List<Map<String, Object>> findById(String id);
	
	public void checkStu(@Param(value="id")String id);
	
	public void addUser(@Param(value="id")String id);
}

(2)StuInfoMapper.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">


<!-- 把namespace改成接口名 -->
<mapper namespace="com.school.mapper.StuInfoMapper">
<!--    
              每一種sql語句使用不同的節點標籤
              語句不能是固定的
        id是sql的表示不能重複
        parameterType 表示傳入數據的數據類型
        #{no} 表示在map中取值時的鍵,這裏值取建爲no的值 
              此時no 等是map集合中的key 名    
              再回到配置文件中加入<mappers>標籤中 
 -->
 
<!--插入完是否希望知道主鍵的值  -->
<insert id="save" parameterType="java.util.Map">
insert into t_stuInfo
(stuNo,stuName,stuSex,stuTel,idCard,stuInter,stuMajor,stuCollege,stuClass)
values(#{stuNo},#{stuName},#{stuSex},#{stuTel},#{idCard},#{stuInter},#{major},#{college},#{class});
<selectKey keyProperty="id" order="AFTER"  resultType="int">
select LAST_INSERT_ID();
</selectKey>
</insert>

<insert id="addUser" parameterType="java.lang.String">
insert into t_user
(userId,userPassword)
values(#{id},#{id});
<selectKey keyProperty="id" order="AFTER"  resultType="int">
select LAST_INSERT_ID();
</selectKey>
</insert>


<delete id="del" parameterType="java.util.Map">
delete from t_mgr_stu_info
where id=#{id};
</delete>

<delete id="delOne" parameterType="java.lang.String">
delete from t_mgr_stu_info
where id=#{id};
</delete>


<update id="update" parameterType="java.util.Map">
update t_mgr_stu_info
set stu_no=#{no},stu_name=#{name},stu_sex=#{sex},stu_tel=#{tel}
where id=#{id};
</update>

<update id="checkStu" parameterType="java.lang.String">
update t_stuInfo
set stuStatus=1
where stuNo=#{id};
</update>


<select id="findAll" resultType="java.util.Map"> 
select
*
from t_stuInfo ; 
</select>
<select id="findStuJob" resultType="java.util.Map"> 
select
*
from t_report ; 
</select>


<select id="findOne" resultType="java.util.Map" parameterType="int"> 
select
*
from t_mgr_stu_info where id=#{id}; 
</select>
<select id="findById" resultType="java.util.Map" parameterType="java.lang.String"> 
select
*
from t_mgr_stu_info where id=#{id}; 
</select>


<select id="findByName" resultType="java.util.Map" parameterType="java.lang.String"> 
select
*
from t_stuInfo 
where stuName like '%${condition}%' or stuNo like '%${condition}%'; 
</select>
<select id="findJobByCondition" resultType="java.util.Map" parameterType="java.lang.String"> 
select
*
from t_report 
where stuNo like '%${condition}%' or workcpy like '%${condition}%'; 
</select>
<!-- 
   #{}不能用於模糊查詢,這裏認爲#{}是一個獨立的值,這時使用${} 
     #相當於?,$相當於字符串的一部分
     傳單個值的時候${value},只有一個value
-->


<select id="findByPro" resultType="java.util.Map" parameterType="java.util.Map"> 
select
*
from t_mgr_stu_info 
where stu_no like '%${no}%' or stu_name like '%${name}%' or stu_sex like '%${sex}%' or stu_tel like '%${tel}%'; 
</select>


<select id="findByDPro" resultType="java.util.Map" parameterType="java.util.Map"> 
select
*
from t_stuInfo


<!-- where標籤可以自動去掉第一個and --> 


<where>
<if test="stuNo!=null and stuNo!=''">
and stuNo=#{condition}
</if>
<if test="stuName!=null and stuName!=''">
and stuName=#{condition}
</if>
</where>
</select>
</mapper>

5.Control 

package com.school.control;

import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class StuControl {
	@Autowired
	private com.school.service.StuInfoService stuInfoService;
	
	@RequestMapping("/del")
	public String delStu(String id) {
		System.out.println("準備刪除");
		stuInfoService.delOne(id);
//		return "redirect:ha";  //重定向
		return "ha";   //spring mvc 默認請求轉發
	}
	@RequestMapping("/sch_addStu")
	public String addStu(@RequestParam Map<String,Object> map) {
		System.out.println("準備插入。。。");
		System.out.println(map.get("stuNo"));
		stuInfoService.addStu(map);
//		return "redirect:ha";  //重定向
		return "sch_findAllStu";   //spring mvc 默認請求轉發
	}
	
	@RequestMapping("/toUpdate")
	public ModelAndView toUpdata(String id){
		Map<String,Object> map = stuInfoService.findById(id);
		for (Object value : map.values()) { 
			  System.out.println("Value = " + value); 
			}
		ModelAndView mv = new ModelAndView();
		mv.addObject("stu",map);
		mv.setViewName("toUpdate.jsp");
		return mv;
	}
	@RequestMapping("/updateStu")
	public @ResponseBody String updateStu(@RequestParam Map<String,Object> map) {
		System.out.println("準備更新。。。");
		stuInfoService.updateStu(map);
//		return "redirect:ha";  //重定向
		return "ok";   //spring mvc 默認請求轉發
	}
	@RequestMapping("/sch_checkStu")
	public String checkStu(String id) {
		System.out.println("準備審覈"+id);
		stuInfoService.checkStu(id);
		stuInfoService.addUser(id);
		return "sch_findAllStu";   //spring mvc 默認請求轉發
	}
	
	@RequestMapping("/findByPro")
	public ModelAndView findByPro(@RequestParam Map<String,Object> map) {
		System.out.println("準備條件查詢。。。");
		List<Map<String,Object>> list=stuInfoService.findByDPro(map);
		System.out.println("檢索到:"+list.size());
		ModelAndView mv=new ModelAndView();
		mv.addObject("StuList",list);
		mv.setViewName("NewFile.jsp");
//		return "redirect:ha";  //重定向
		return mv;   //spring mvc 默認請求轉發
	}
	
	@RequestMapping("/sch_findByCondition")
	public ModelAndView findByCondition(String condition) {
		System.out.println("準備條件查詢。。。");
		List<Map<String,Object>> list=stuInfoService.findByCondition(condition);
		System.out.println("檢索到:"+list.size());
		ModelAndView mv=new ModelAndView();
		mv.addObject("StuList",list);
		mv.setViewName("/School/studentList.jsp");
//		return "redirect:ha";  //重定向
		return mv;   //spring mvc 默認請求轉發
	}
	@RequestMapping("/sch_findJobByCondition")
	public ModelAndView findJobByCondition(String condition) {
		System.out.println("準備條件查詢。。。");
		List<Map<String,Object>> list=stuInfoService.findJobByCondition(condition);
		System.out.println("檢索到:"+list.size());
		ModelAndView mv=new ModelAndView();
		mv.addObject("StuList",list);
		mv.setViewName("/School/searchJobMsg.jsp");
//		return "redirect:ha";  //重定向
		return mv;   //spring mvc 默認請求轉發
	}
	
	@RequestMapping("/sch_findAllStu")
	public ModelAndView findAllStu(@RequestParam Map<String,Object> map){
		List<Map<String, Object>> list = stuInfoService.findAll();
		//保持數據和轉向的頁面名稱
		ModelAndView mv = new ModelAndView();
		//保持數據
		mv.addObject("listSize", list.size());
		System.out.println(list.size());
		//保持轉向的頁面名稱
		mv.setViewName("/School/studentList.jsp");
		mv.addObject("StuList", list);
		return mv;
	}
	@RequestMapping("/sch_findStuJob")
	public ModelAndView findAllStuJob(@RequestParam Map<String,Object> map){
		List<Map<String, Object>> list = stuInfoService.findStuJob();
		//保持數據和轉向的頁面名稱
		ModelAndView mv = new ModelAndView();
		//保持數據
		mv.addObject("listSize", list.size());
		System.out.println(list.size());
		//保持轉向的頁面名稱
		mv.setViewName("/School/searchJobMsg.jsp");
		mv.addObject("StuList", list);
		return mv;
	}
	@RequestMapping("/sch_findGrad")
	public ModelAndView findGrad(@RequestParam Map<String,Object> map){
		List<Map<String, Object>> list = stuInfoService.findAll();
		//保持數據和轉向的頁面名稱
		ModelAndView mv = new ModelAndView();
		//保持數據
		mv.addObject("listSize", list.size());
		System.out.println(list.size());
		//保持轉向的頁面名稱
		mv.setViewName("/School/graduate.jsp");
		mv.addObject("StuList", list);
		return mv;
	}
	
//	@RequestMapping("/toUpdate")
//	@ResponseBody
//	public List<Map<String,Object>> ajax(){
//		List<Map<String,Object>> list=stuInfoService.findAll();
//		return list;
//	}
}

 

 

6.testMain

package com.school.service;

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

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:application.xml" })
public class testStuInfoService {
	@Autowired
	private StuInfoService stuInfoService;

	@Test
	public void findAllTest() {

		List<Map<String, Object>> list = stuInfoService.findAll();
		System.out.println(list.size());

	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章