本文主要概述在项目中使用mybatis及springMVC的小知识点
1.使用mybatis往oracle插入数据,mybatis返回的依然是更新数据的条数,并将主键写入对象中,及mybatis批量插入数据。下面的两种情况均可使用在插入后,将userId写入到对象中。
<insert id="addUser" parameterType="com.model.UserVO"> <selectKey keyProperty="userId" resultType="java.lang.String" order="BEFORE"> select SEQ_USER_SEQUENCE.NEXTVAL from dual </selectKey> insert into t_user (userId ,userName) values(userId,#{userName,jdbcType=VARCHAR}) </insert> <insert id="addUser" parameterType="com.model.UserVO"> <selectKey keyProperty="userId" resultType="java.lang.String" order="AFTER"> select SEQ_USER_SEQUENCE.currval from dual </selectKey> insert into t_user (userId ,userName) values(SEQ_USER_SEQUENCE.NEXTVAL,#{userName, jdbcType=VARCHAR}) </insert>
2:大量数据插入:
addUsers(List<UserVO> lists) //method <insert id="addUsers" parameterType="java.util.List"> insert into t_user (userId, userName) <foreach close=")" collection="list" item="item" index="index" open="(" separator="union"> select #{item.userId,jdbcType=VARCHAR}, #{item.userName,jdbcType=VARCHAR} from dual </foreach> </insert> <insert id="demoinsert" parameterType="java.util.List"> <foreach collection="list" item="item" index ="index" open="begin" close=";end;" separator=";"> insert into t_role_resources ( role_id , resource_id , available , modify_date , modify_user) values(#{item.roleId,jdbcType=VARCHAR} , #{item.resourceId ,jdbcType=INTEGER},#{item.available,jdbcType=VARCHAR}, sysdate,#{item.modifyUser,jdbcType=VARCHAR} ) </foreach> </insert>
此方法不适合特大数据的批量插入之后,一次性提交。大批量数据适合分批次提交,可参考博客:
http://blog.csdn.net/wlwlwlwl015/article/details/50246717
3:在操作数据库时,在开发环境下会测试每个sql的性能和耗时,可采用实现mybatis中的Interceptor
import java.util.Properties; import java.lang.reflect.Method; import org.apache.ibatis.plugin.*; import org.apache.ibatis.cache.CacheKey; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Intercepts(value = { @Signature (type=Executor.class, method="update", args={MappedStatement.class,Object.class}), @Signature(type=Executor.class, method="query", args={MappedStatement.class,Object.class,RowBounds.class,ResultHandler.class, CacheKey.class,BoundSql.class}), @Signature(type=Executor.class, method="query", args={MappedStatement.class,Object.class,RowBounds.class,ResultHandler.class})}) public class TimerInterceptor implements Interceptor { private static final Logger logger = LoggerFactory.getLogger(TimerInterceptor.class); /** * 实现拦截的地方 * */ @Override public Object intercept(Invocation invocation) throws Throwable { Object target = invocation.getTarget(); Object result = null; if (target instanceof Executor) { long start = System.currentTimeMillis(); Method method = invocation.getMethod(); /**执行方法*/ result = invocation.proceed(); long end = System.currentTimeMillis(); logger.info("[TimerInterceptor] execute [" + method.getName() + "] cost [" + (end - start) + "] ms"); } return result; } /** * Plugin.wrap生成拦截代理对象 * */ @Override public Object plugin(Object target) { return Plugin.wrap(target, this); } @Override public void setProperties(Properties properties) { } }
然后在mybatis的配置文件中,将这个类配置成plugin 。
4.在前后端开发时,开发环境出现的跨域问题,可以写一个Filter,实现这个接口,这样在开发环境便于与其他人员调试code。
@Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; // 指定允许其他域名访问 response.setHeader("Access-Control-Allow-Origin", "*"); // 表明它允许POST,GET,PUT,DELETE的外域请求 response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); // 不需要再发送预检验请求,可以缓存该结果 response.setHeader("Access-Control-Max-Age", "3600"); // 表明它允许跨域请求包含content-type头 response.setHeader("Access-Control-Allow-Headers", " Origin, X-Requested-With, Content-Type, Accept"); chain.doFilter(req, res); }
然后在应用的web.xml中配置这个Filter即可。
以上。不定期更新详扯。
相关推荐
javaweb课设基于SpringBoot+SpringMVC+Mybatis实现的手机销售后台管理系统源码.zipjavaweb课设基于SpringBoot+SpringMVC+Mybatis实现的手机销售后台管理系统源码.zipjavaweb课设基于SpringBoot+SpringMVC+Mybatis...
Java Web 开发是利用 Java 技术进行网络应用程序开发的一种方式。随着互联网技术的发展,Java Web 已成为企业级应用开发的重要组成部分。本篇将详细介绍 Java Web 开发的基础知识,包括 Java Web 的概念、常用框架...
本项目是一个基于Spring Boot和MyBatis的宠物领养系统,旨在为在校大学生的Java课程设计和毕业设计提供实用的学习参考,帮助学生深入理解现代Java开发的关键技术与应用。 功能特点: 用户注册与登录:系统支持用户...
校友录网站。基于javaWeb,由Maven构建管理,采用Spring+SpringMVC+MyBatis框架,用EhCache做数据缓存。门户网站采用BootStrap设计界面,后台管理网站用AmazeUI设计界面。.zip
本项目不仅帮助在校大学生理解和掌握Java Web开发技术,还为Java技术爱好者提供了一个学习和实践Spring Boot、MyBatis、Thymeleaf组合应用的优秀范例。通过本项目,学习者可以深入了解现代在线教育系统的开发流程。
本资源采用Spring Boot框架开发,集成了MyBatis-Plus持久层框架,前端使用Vue.js实现页面交互。项目结构清晰,代码规范,功能齐全,适合用于Java课程设计、毕业设计或相关开发参考。本项目可以帮助在校大学生深入...
《JavaWeb应用程序设计》是由栗菊民编著的一本深入探讨JavaWeb开发的专业教材,主要针对初学者和有一定基础的学习者。这本书详细介绍了如何利用Java技术来构建Web应用程序,涵盖了从基本概念到高级特性的全面内容。...
在JavaWeb开发中,构建一个完整的Web基础框架是非常重要的,因为它可以提高开发效率,提供良好的架构,便于维护和扩展。本篇文章将详细讲解基于Spring、SpringMVC、MyBatis、SpringSecurity、EhCache和JCaptcha这六...
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 【MySql】 MySQL是一个开源的关系型数据库管理系统,广泛应用于互联网...
基于javaWeb-springboot+mybatis+materializecss 图书销售系统,全栈web开发学习,毕设 基于javaWeb-springboot+mybatis+materializecss 图书销售系统,全栈web开发学习,毕设 基于javaWeb-springboot+mybatis+...
标题 "mybatis+javaweb+mysql" 描述了一个典型的Java Web开发中的技术栈,它涉及到MyBatis、JavaWeb和MySQL三个核心组件。这里我们将深入探讨这三个技术领域及其相互结合的应用。 1. **MyBatis**:MyBatis是一个...
总结起来,"liyunqi-blog_javaweb_spring_dubbo_mybatis_"项目是一个集成了Java Web开发常用技术的博客后台系统,通过Spring实现业务逻辑,利用Dubbo进行服务治理,借助MyBatis处理数据库操作。这样的架构设计不仅...
JavaWeb应用与开发是Java程序员在构建Web应用程序时必须掌握的核心技术之一。郭克华的书籍深入浅出地讲解了这一领域,通过一系列实例帮助读者理解并熟练掌握相关技能。这个压缩包包含了书中所有示例的源代码,以及...
JavaWeb技术是构建互联网应用程序的一种强大工具,它基于Java平台,为开发动态、交互式的Web应用提供了丰富的功能。本讲义将重点介绍JavaWeb的基本概念、核心组件以及常用框架。 一、JavaWeb应用概述 JavaWeb应用是...
安装和配置Tomcat是JavaWeb开发的重要步骤之一,确保应用能在服务器上正确运行。 #### 五、JAVASERVLET编程技术 ##### Servlet概述 Servlet是JavaWeb开发的核心技术之一,用于处理客户端的HTTP请求,并生成动态的...
JavaWeb 介绍 javaWeb+Axios+ajax+Mybatis+vue 软件架构 软件架构说明 登录,注册没有写,也不需要写吧。 基于element-ui+javaweb+mybatis使用 代码简洁明了,更新操作有些许瑕疵,但不影响使用。
【标题】"mymall-master (1)_springmvc_javaweb_java_商城_mybatis_" 指示了一个基于Java技术栈的电商项目,重点使用了SpringMVC、Spring、MyBatis框架,用于构建一个类似小米商城的在线购物平台。 【描述】"商城...
JavaWeb应用开发期末试卷及答案.doc
Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。本文将深入探讨Java学习路线,从基础到高级,包括JavaSE、JavaEE、Spring、SpringMVC、Mybatis以及SpringBoot等关键知识点。 首先,...
综上所述,"javaweb+mybatis+struts权限管理系统"是一个使用JavaWeb技术和Struts、MyBatis框架构建的,具备完整的用户、角色和权限管理功能的应用。通过这样的系统,企业能够有效地控制不同用户访问系统资源的权限,...