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

相关文章

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注