SSM整合(形式一)

建表及自增问题,参考: https://blog.csdn.net/qq_35206244/article/details/81213817
源码链接:https://pan.baidu.com/s/1RVjuwiMqVc2t8E3322LZIA 密码:mvmo

SSM和整合有两种形式,先看第一种,注意项目树结构中包的命名。
环境:

  • eclipse oxygen
  • oracle 11g
    注:自行根据entity建表,仅包含3个字段pid(sequence自增)、pname、pwd,自增问题,参照另一篇文章

  • 这里写图片描述

    配置文件5个

    1、实体映射文件

    PersonMapper.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="com.it.ssm.entity">
        <select id="queryById" parameterType="int" resultType="person">
            select * from person where pid = #{pid}
    
        <!--使用sequence,但实现设置了触发器,所以略掉id-->
    
        <insert id="add" parameterType="person" >
            insert into person (pname,pwd) values(#{pname},#{pwd})
        </insert>
        <update id="update" parameterType="person">
            update person set pname=#{pname}, pwd=#{pwd} where pid=#{pid}
        </update>
        <delete id="delete" parameterType="int">
            delete from person where pid=#{pid}
        </delete>
        <select id="login" parameterType="person" resultType="person">
            select * from person where pid=#{pid} and pwd=#{pwd}
        </select>
    
        <!--多条件查询-->
    
        <select id="queryAll" parameterType="person" resultType="person">
            select * from person where 1=1 
            <if test="pname!=''and pname!=null">
              and pname like '%${pname}%'
            </if>
            <if test="pid!=null and pid!=''">
              and pid=#{pid}
            </if>
        </select>   
    
    </mapper>

    2、applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!--注意配置xmlns及schemalocation-->
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:aop="http://www.springframework.org/schema/aop" 
        xmlns:tx="http://www.springframework.org/schema/tx"
        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" 
        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/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
        <context:property-placeholder location="WEB-INF/jdbc.properties" />
        <!--配置数据源-->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
            <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>
        <!--配置sqlSessionFactory-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"></property>
            <property name="configLocation" value="WEB-INF/mybatis-config.xml"></property>
        </bean>
        <!--配置事务管理者-->
        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!--设置事务-->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="query*" read-only="true" />
                <tx:method name="*" />
            </tx:attributes>
        </tx:advice>
        <!--配置AOP切入点,自动切入-->
        <aop:config>
            <aop:pointcut id="fooServiceOperation"
                expression="execution(* com.it.ssm.service.impl.*.*(..))" />
            <aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceOperation" />
        </aop:config>
    
        <!-- <tx:annotation-driven transaction-manager="transactionManager"/> -->
    
    </beans>

    3、jdbc.properties

    jdbc.driver=oracle.jdbc.driver.OracleDriver
    jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
    jdbc.username=scott
    jdbc.password=root
    

    4、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>
        <typeAliases>
            <typeAlias type="com.it.ssm.entity.Person" alias="person"/>
        </typeAliases>  
        <mappers>
            <mapper resource="com/it/ssm/entity/PersonMapper.xml" />
        </mappers>
    </configuration>

    5、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:p="http://www.springframework.org/schema/p"
        xmlns:mvc="http://www.springframework.org/schema/mvc" 
        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.it.ssm" />
        <!--注解-->
        <mvc:annotation-driven></mvc:annotation-driven>
        <!--视图解析器,解析jsp-->
        <bean id="jspViewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass"
                value="org.springframework.web.servlet.view.JstlView" />
            <property name="prefix" value="/WEB-INF/jsp/" />
            <property name="suffix" value=".jsp" />
        </bean>
        <mvc:default-servlet-handler/>
        <import resource="applicationContext.xml"/>
    
    </beans>

    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" 
    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>springMVC</display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <!--配置filter,处理字符编码-->
      <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>
    
      <servlet>
        <servlet-name>example</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>WEB-INF/springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>example</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>

    7、entity

    package com.it.ssm.entity;
    
    public class Person {
        private Integer pid;
        private String pname;
        private String pwd;
        public Person() {
            // TODO Auto-generated constructor stub
        }
    
        public Person(String pname) {
            super();
            this.pname = pname;
        }
    
        public Person(Integer pid, String pname, String pwd) {
            super();
            this.pid = pid;
            this.pname = pname;
            this.pwd = pwd;
        }
        public Integer getPid() {
            return pid;
        }
        public void setPid(Integer pid) {
            this.pid = pid;
        }
        public String getPname() {
            return pname;
        }
        public void setPname(String pname) {
            this.pname = pname;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    
    
    }
    

    8、dao

    public interface PersonDao {
        public Person queryById(int pid);
        public boolean add(Person person);
        public boolean update(Person person);
        public boolean delete(int pid);
        public List<Person> queryAll(Person person);
        public Person login(Person person);
    
    
    }
    
    package com.it.ssm.dao.impl;
    
    import java.util.List;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    
    import com.it.ssm.dao.PersonDao;
    import com.it.ssm.entity.Person;
    @Repository
    public class PersonDaoImpl implements PersonDao {
        private SqlSessionFactory sqlSessionFactory;    
        @Autowired
        public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
            this.sqlSessionFactory = sqlSessionFactory;
        }
    
        public Person queryById(int pid){
            SqlSession session=sqlSessionFactory.openSession();
            Person person=(Person)session.selectOne("queryById", pid);
            session.close();
            return person;      
        }
    
        @Override
        public boolean add(Person person) {
            SqlSession session=sqlSessionFactory.openSession();     
            int result=session.insert("add",person);
            boolean flag=false;
            if(result>0){
                flag=true;
            }
            session.close();
            return flag;
        }
    
        @Override
        public boolean update(Person person) {
            SqlSession session=sqlSessionFactory.openSession();
            int result=session.update("update",person);
            boolean flag=false;
            if(result>0){
                flag=true;
            }
            session.close();
            return flag;
        }
    
        @Override
        public boolean delete(int pid) {
            SqlSession session=sqlSessionFactory.openSession();
            int result=session.delete("delete",pid);
            boolean flag=false;
            if(result>0){
                flag=true;
            }
            session.close();
            return flag;
        }
    
        @Override
        public List<Person> queryAll(Person person) {
            SqlSession session=sqlSessionFactory.openSession();
            List<Person> list=session.selectList("queryAll",person);
            session.close();
            return list;
        }
    
        @Override
        public Person login(Person person) {
            SqlSession session=sqlSessionFactory.openSession();
            Person person2=(Person)session.selectOne("login", person);
            session.close();
            return person2;
        }
    
    
    }
    

    9、services

    public interface PersonService {
        public Person queryById(int pid);
        public boolean add(Person person);
        public boolean update(Person person);
        public boolean delete(int pid);
        public List<Person> queryAll(Person person);
        public Person login(Person person);
    
    }
    
    package com.it.ssm.service.impl;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.it.ssm.dao.PersonDao;
    import com.it.ssm.entity.Person;
    import com.it.ssm.service.PersonService;
    @Service
    public class PersonServiceImpl implements PersonService {
        private PersonDao personDao;
        @Autowired
        public void setPersonDao(PersonDao personDao) {
            this.personDao = personDao;
        }
    
        @Override
        public Person queryById(int pid) {
            // TODO Auto-generated method stub
            return personDao.queryById(pid);
        }
    
        @Override
        public boolean add(Person person) {
            // TODO Auto-generated method stub
            return personDao.add(person);
        }
    
        @Override
        public boolean update(Person person) {
            // TODO Auto-generated method stub
            return personDao.update(person);
        }
    
        @Override
        public boolean delete(int pid) {
            // TODO Auto-generated method stub
            return personDao.delete(pid);
        }
    
        @Override
        public List<Person> queryAll(Person person) {
            // TODO Auto-generated method stub
            return personDao.queryAll(person);
        }
    
        @Override
        public Person login(Person person) {
            // TODO Auto-generated method stub
            return personDao.login(person);
        }
    
    }
    

    10、controller

    package com.it.ssm.controller;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.ibatis.annotations.Param;
    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.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.servlet.ModelAndView;
    
    import com.it.ssm.entity.Person;
    import com.it.ssm.service.PersonService;
    
    
    @Controller
    public class PersonController {
        private PersonService personService;
        @Autowired
        public void setPersonService(PersonService personService) {
            this.personService = personService;
        }
        @RequestMapping(value="/toLogin",method=RequestMethod.GET)
        public String toLogin(){
            return "login";
        }
        @RequestMapping(value="/toAdd",method=RequestMethod.GET)
        public String toAdd(){
            return "add";
        }
        @RequestMapping(value="/add",method=RequestMethod.POST)
        public String add(Person person){
            boolean flag=personService.add(person);
            if(flag){
                return "redirect:queryAll";
            }else{
                return "add";
            }
    
        }
        @RequestMapping(value="/login",method=RequestMethod.POST)
        public String login(Person person){
            Person person2=personService.login(person);
            if(person2!=null){
                return "redirect:queryAll";
            }else{
                return "login";
            }
        }
        @RequestMapping(value="/queryAll",method=RequestMethod.GET)
        public ModelAndView queryAll(Person person){
            ModelAndView mav=new ModelAndView("show");
            List<Person> list=personService.queryAll(person);       
            mav.addObject("list", list);
            return mav;
        }
        @RequestMapping(value="/queryById",method=RequestMethod.GET)
        public ModelAndView queryById(@Param("pid") int pid){
            ModelAndView mav=new ModelAndView("update");
            Person person=personService.queryById(pid);     
            mav.addObject("person", person);
            return mav;
        }
        @RequestMapping(value="/update",method=RequestMethod.POST)
        public String update(Person person){
            boolean flag=personService.update(person);
            if(flag){
                return "redirect:queryAll";
            }else{
                return "add";
            }
    
        }
        @RequestMapping(value="/delete",method=RequestMethod.GET)
        public String delete(@Param("pid") int pid){
            boolean flag=personService.delete(pid);
            if(flag){
                return "redirect:queryAll";
            }else{
                return "redirect:queryAll";
            }
        }
        //添加了异步登录,修改登陆页的提交方式,可实现异步请求。
        @RequestMapping("/ajax")
        @ResponseBody
        public Object ajax(Person person){
            //boolean flag=false;
            if(10025==person.getPid()&&"123".equals(person.getPwd())){
                //return "{\"flag\":true}";
                return person;
            }else{
                return person;
                //return "{\"flag\":false}";
            }
        }
    
    }
    

    11、视图

    login.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>
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
    $(function(){
        $("#sub").click(function(){
            $.post("ajax",$("form").serialize(),function(data){
                alert(data.pid);
                /* if(data.flag){
                    alert("hello");
                }else{
                    alert("world");
                } */
            },'json');
        })
    })
    </script>
    <body>
    <form action="login" method="post">
        <table border="1" width="300px">
            <tr>
                <td>帐号</td>
                <td><input type="text" name="pid"/></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><input type="password" name="pwd"/></td>
            </tr>
            <tr>            
                <td colspan="2"><input type="submit" value="提交"/></td> 
                <!-- <td colspan="2"><input type="button" value="提交" id="sub"/></td> -->
            </tr>
        </table>
    </form>
    
    </body>
    </html>

    2.show.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!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>
    <a href="toAdd">添加</a>
    <form action="queryAll" method="get">
        <table border="1" width="300px">
            <tr>
                <td>姓名</td>
                <td><input type="text" name="pname" /></td>
    
                <td>编号</td>
                <td><input type="text" name="pid" /></td>
                <td><input type="submit" value="查询"/></td>
            </tr>
        </table>
    </form>
    <table border="1" width="400px">
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>密码</th>
            <th>操作</th>
        </tr>
        <c:forEach var="person" items="${list}">
            <tr>
                <td>${person.pid }</td>
                <td>${person.pname }</td>
                <td>${person.pwd }</td>
                <td><a href="queryById?pid=${person.pid}">编辑</a>||
                <a href="delete?pid=${person.pid}">删除</a>
                </td>
            </tr>
        </c:forEach>
    </table>
    </body>
    </html>

    3.update.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>
    <form action="update" method="post">
        <table border="1" width="300px">
            <tr>
                <td>姓名</td>
                <td><input type="text" name="pname" value="${person.pname }"/></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><input type="password" name="pwd" value="${person.pwd }"/></td>
            </tr>
            <tr>            
                <td colspan="2">
                <input type="hidden" name="pid" value="${person.pid }"/>
                <input type="submit" value="提交"/></td>
            </tr>
        </table>
    </form>
    
    </body>
    </html>

    4、add.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>
    <form action="add" method="post">
        <table border="1" width="300px">
            <tr>
                <td>姓名</td>
                <td><input type="text" name="pname"/></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><input type="password" name="pwd"/></td>
            </tr>
            <tr>            
                <td colspan="2"><input type="submit" value="提交"/></td>
            </tr>
        </table>
    </form>
    
    </body>
    </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jerryzhou;

您的鼓励,将是我的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值