mybatis-springmvc+mybatis实现增删改查

2024-08-30 02:32

本文主要是介绍mybatis-springmvc+mybatis实现增删改查,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源码下载:http://download.csdn.net/detail/u013147600/9074541

遇到过的问题(org.mybatis.spring.transaction.SpringManagedTransactionFactory.newTransaction

http://blog.csdn.net/u013147600/article/details/48182041

所需jar包:

commons-logging-1.0.4.jar
hamcrest-core-1.3.jar
junit-4.12.jar
mybatis-3.2.0-SNAPSHOT.jar
mybatis-spring-1.1.1.jar
ojdbc14.jar
spring-aop-3.2.0.RC2.jar
spring-aspects-3.2.0.RC2.jar
spring-beans-3.2.0.RC2.jar
spring-context-3.2.0.RC2.jar
spring-context-support-3.2.0.RC2.jar
spring-core-3.2.0.RC2.jar
spring-expression-3.2.0.RC2.jar
spring-jdbc-3.2.0.RC2.jar
spring-jms-3.2.0.RC2.jar
spring-orm-3.2.0.RC2.jar
spring-tx-3.2.0.RC2.jar
spring-web-3.2.0.RC2.jar
spring-webmvc-3.2.0.RC2.jar

实体类:

package com.mybatis.entity;/*** @author lyx*	* 2015-9-2下午7:37:44**com.mybatis.entity.StyleCategory**/
public class StyleCategory {private int styleId;private String styleName;public int getStyleId() {return styleId;}public void setStyleId(int styleId) {this.styleId = styleId;}public String getStyleName() {return styleName;}public void setStyleName(String styleName) {this.styleName = styleName;}public StyleCategory(int styleId, String styleName) {super();this.styleId = styleId;this.styleName = styleName;}public StyleCategory(String styleName) {super();this.styleName = styleName;}public StyleCategory() {super();}}

(styleMapper.xml)sql映射文件

<?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.mybatis.dao.StyleMapper"><sql id="queryFields">styleId,styleName</sql><!-- 根据id查询style信息 --><select id="getStyleCategoryInfoById" parameterType="int" resultType="StyleCategory">select<include refid="queryFields"></include>from STYLE_CATEGORY where styleId=#{styleId}</select><select id="getAllStyleCategoryInfo" resultType="StyleCategory" >select * from STYLE_CATEGORY</select><delete id="deleteStyleCategory" parameterType="int">delete from STYLE_CATEGORY where styleId =#{styleId}</delete><update id="updateStyleCategory" parameterType="StyleCategory">update STYLE_CATEGORY set styleName=#{styleName} where styleId=#{styleId}</update><insert id="addStyleCategory" parameterType="StyleCategory" keyProperty="styleId" ><!-- <selectKey resultType="int" order="BEFORE" keyProperty="styleId">select SEQUENCE_STYLECATEGORY.nextval as STYLEID from dual; select nextval('dual')</selectKey> -->insert into STYLE_CATEGORY(styleName) values(#{styleName})</insert></mapper>

mybatis主配置文件:mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 别名 --><typeAliases><typeAlias type="com.mybatis.entity.StyleCategory" alias="StyleCategory"/></typeAliases><!-- 配置sql映射文件 --><mappers><mapper resource="mapper/styleMapper.xml"/></mappers></configuration>

springmvc配置文件:springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  xmlns:context="http://www.springframework.org/schema/context"  xmlns:p="http://www.springframework.org/schema/p"  xmlns:mvc="http://www.springframework.org/schema/mvc"  xmlns:cache="http://www.springframework.org/schema/cache"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.0.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-3.0.xsdhttp://www.springframework.org/schema/cache  http://www.springframework.org/schema/cache/spring-cache-3.2.xsd "><!-- 基本配置  -begin--><!-- 自动注入 --><context:annotation-config/><!-- 自动扫描包  组件扫描--><context:component-scan base-package="com.mybatis"></context:component-scan><!-- 注释驱动 --><mvc:annotation-driven/> <!-- 配置不用DispatcherServlet 拦截的路径 --><mvc:resources location="/res/" mapping="/res/**"/> <!-- 默认分发处理器不会拦截静态资源 --><!--  <mvc:default-servlet-handler/> --><!-- 默认地址栏访问跳转到首页 --><!--   <mvc:view-controller path="/" view-name="forward:/index"/>  --><!-- 也可以利用<mvc:view-controller/>配置错误页面的跳转 --><!-- 避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --><bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 --></list></property></bean><!-- 视图解析器 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" ><property name="prefix" value="/"></property><property name="suffix" value=".jsp"></property><property name="viewClass"  value="org.springframework.web.servlet.view.JstlView"></property>  </bean>   	  <!-- 引入项目配置文件 --><!-- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:dbconfig.properties</value></list></property></bean>  --><!-- 	<context:property-placeholder location="classpath:dbconfig.properties"/> --><!-- datasource 配置数据库 --><!-- datasource --><!--  destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用.--><!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" ><property name="url" value="${url}"></property><property name="driverClassName" value="${driverClassName}"></property><property name="username" value="${username}"></property><property name="password" value="${password}"></property></bean> --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property><property name="driverClassName"  value="oracle.jdbc.driver.OracleDriver"></property><property name="username" value="lyx"></property><property name="password" value="lyx"></property></bean> <!-- mybatis配置 --><bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property></bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:mybatis-config.xml"></property><property name="dataSource" ref="dataSource"></property> </bean> <!-- mapper bean  数据访问接口对应的实现bean通过MapperFactoryBean创建出来。需要执行接口类全称和SqlSession工厂bean的引用。如果注释了这个类时: 可在public interface StyleMapper 上加上注解@Transactional--><!-- <bean id="studentMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">接口类全称<property name="mapperInterface" value="com.mybatis.dao.StyleMapper"></property>工厂bean<property name="sqlSessionFactory" ref="sqlSessionFactory"></property></bean> --><!-- 扫描 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="annotationClass" value="org.springframework.stereotype.Repository"></property><property name="basePackage" value="com.mybatis"></property><property name="sqlSessionFactory" ref="sqlSessionFactory"></property></bean>  <!-- 基本配置  -end--></beans>

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name></display-name>	<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 加载顺序 context-param,listener,filter,servlet --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></context-param><!-- 防止发生java.beans.Introspector内存泄露,应将它配置在ContextLoaderListener的前面 --><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener> <!-- 监听 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</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><!-- springMvc配置 --><servlet><servlet-name>springMvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- springMvc-XML配置文件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!-- 执行顺序 --><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>springMvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

StyleMapper.java接口

package com.mybatis.dao;import java.util.List;import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;import com.mybatis.entity.StyleCategory;@Repository
//@Transactional
public interface StyleMapper {public StyleCategory getStyleCategoryInfoById(int styleId);public List<StyleCategory> getAllStyleCategoryInfo();public boolean deleteStyleCategory(int styleId);public boolean updateStyleCategory(StyleCategory style);public boolean addStyleCategory(StyleCategory style);
}

StyleController.java

package com.mybatis.controller;import java.io.IOException;
import java.io.Reader;
import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
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 com.mybatis.dao.StyleMapper;
import com.mybatis.entity.StyleCategory;/*** @author lyx*	* 2015-9-2下午2:48:45**com.mybatis.controller.StyleController**/
@Controller
@RequestMapping("/style")
public class StyleController {@Autowiredprivate StyleMapper styleMapper;/*** @param styleId* @param request* @return* @throws IOException* 查询单条数据*/@RequestMapping("/queryByOne")public String queryByOne(@RequestParam("styleId")int styleId,HttpServletRequest request) throws IOException{/*Reader reader =Resources.getResourceAsReader("mybatis-config.xml");SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(reader); SqlSession session =sqlSession.openSession();StyleCategory style=session.selectOne("com.mybatis.dao.StyleMapper.getStyleCategoryInfoById",2);*/StyleCategory style = styleMapper.getStyleCategoryInfoById(styleId);System.out.println(style.getStyleId()+":"+style.getStyleName());request.setAttribute("style", style);return "/index";}/*** @param request* @return* 查询全部数据*/@RequestMapping("/queryAllInfo")public String queryAllInfo(HttpServletRequest request){List<StyleCategory>list = styleMapper.getAllStyleCategoryInfo();for (StyleCategory style : list) {System.out.println(style.getStyleId()+":"+style.getStyleName());}request.setAttribute("styleList", list);return "/list";}/*** @param styleId* @param request* @return* 删除*/@RequestMapping("/deleteInfo")public String deleteInfo(@RequestParam("styleId")int styleId,HttpServletRequest request){boolean b =styleMapper.deleteStyleCategory(styleId);if(b){System.out.println("删除成功");}else{System.out.println("删除失败");}return "redirect:/style/queryAllInfo";}/*** @param request* @return* 增加*/@RequestMapping("/addInfo")public String addInfo(HttpServletRequest request){String styleName = request.getParameter("styleName");StyleCategory style = new StyleCategory(styleName);if(styleMapper.addStyleCategory(style)){System.out.println("增加成功");}else{System.out.println("增加失败");}return "redirect:/style/queryAllInfo";}/*** @param styleId* @param request* @return* 先跳转到更新页面*/@RequestMapping("/beforeUpdate")public String beforeUpdate(@RequestParam("styleId") int styleId,HttpServletRequest request){StyleCategory style = styleMapper.getStyleCategoryInfoById(styleId);System.out.println("Update:"+styleId+";"+style.getStyleName());request.setAttribute("style",style);return "/update";}/*** @param request* @return* 更新数据*/@RequestMapping("/updateInfo")public String updateInfo(HttpServletRequest request){int styleId = Integer.valueOf(request.getParameter("styleId"));String styleName =request.getParameter("styleName");StyleCategory style = new StyleCategory(styleId, styleName);boolean b=styleMapper.updateStyleCategory(style);if(b){System.out.println("更新成功");}else{System.out.println("更新失败");}return "redirect:/style/queryAllInfo";}}

list.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><h3><a href="<%=path%>/add.jsp" target="_blank">增加 </a></h3><table><tr><th>StyleId</th><th>StyleName</th><th>Operate</th></tr><c:forEach items="${styleList}"  var="style" varStatus="stus"><tr><td>${style.styleId }</td><td>${style.styleName }</td><td><a href="<%=basePath%>/style/queryByOne?styleId=${style.styleId } " target="_blank">查看</a><a href="<%=basePath%>/style/deleteInfo?styleId=${style.styleId }" target="_blank">删除</a><a href="<%=basePath%>/style/beforeUpdate?styleId=${style.styleId }" target="_blank">修改</a></td></tr></c:forEach></table></body>
</html>

index.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>查看<br><h2>styleId:${style.styleId } ----styleName: ${style.styleName }</h2></body>
</html>

add.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><br><h2>增加</h2><form action="<%= request.getContextPath()%>/style/addInfo" method="post" >styleName:<input type="text" name="styleName" ><input type="submit" value="提交"></form></body>
</html>


update.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><br><h2>修改</h2><form action="<%= request.getContextPath()%>/style/updateInfo" method="post" >styleId:<input type="text" name="styleId" value="${style.styleId}" readonly="readonly">styleName:<input type="text" name="styleName" value="${style.styleName }"><input type="submit" value="提交"></form></body>
</html>


这篇关于mybatis-springmvc+mybatis实现增删改查的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119544

相关文章

springboot+redis实现订单过期(超时取消)功能的方法详解

《springboot+redis实现订单过期(超时取消)功能的方法详解》在SpringBoot中使用Redis实现订单过期(超时取消)功能,有多种成熟方案,本文为大家整理了几个详细方法,文中的示例代... 目录一、Redis键过期回调方案(推荐)1. 配置Redis监听器2. 监听键过期事件3. Redi

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接

SpringBoot整合Zuul全过程

《SpringBoot整合Zuul全过程》Zuul网关是微服务架构中的重要组件,具备统一入口、鉴权校验、动态路由等功能,它通过配置文件进行灵活的路由和过滤器设置,支持Hystrix进行容错处理,还提供... 目录Zuul网关的作用Zuul网关的应用1、网关访问方式2、网关依赖注入3、网关启动器4、网关全局变

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

基于SpringBoot实现分布式锁的三种方法

《基于SpringBoot实现分布式锁的三种方法》这篇文章主要为大家详细介绍了基于SpringBoot实现分布式锁的三种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、基于Redis原生命令实现分布式锁1. 基础版Redis分布式锁2. 可重入锁实现二、使用Redisso

SpringBoo WebFlux+MongoDB实现非阻塞API过程

《SpringBooWebFlux+MongoDB实现非阻塞API过程》本文介绍了如何使用SpringBootWebFlux和MongoDB实现非阻塞API,通过响应式编程提高系统的吞吐量和响应性能... 目录一、引言二、响应式编程基础2.1 响应式编程概念2.2 响应式编程的优势2.3 响应式编程相关技术

SpringBoot的全局异常拦截实践过程

《SpringBoot的全局异常拦截实践过程》SpringBoot中使用@ControllerAdvice和@ExceptionHandler实现全局异常拦截,@RestControllerAdvic... 目录@RestControllerAdvice@ResponseStatus(...)@Except

Springboot配置文件相关语法及读取方式详解

《Springboot配置文件相关语法及读取方式详解》本文主要介绍了SpringBoot中的两种配置文件形式,即.properties文件和.yml/.yaml文件,详细讲解了这两种文件的语法和读取方... 目录配置文件的形式语法1、key-value形式2、数组形式读取方式1、通过@value注解2、通过

Java 接口定义变量的示例代码

《Java接口定义变量的示例代码》文章介绍了Java接口中的变量和方法,接口中的变量必须是publicstaticfinal的,用于定义常量,而方法默认是publicabstract的,必须由实现类... 在 Java 中,接口是一种抽象类型,用于定义类必须实现的方法。接口可以包含常量和方法,但不能包含实例

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的