建表及自增问题,参考: 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>