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());
}
}