随笔分类 - Struts2/MyBatis
摘要:本文摘自:Java EE企业级应用开发教程,有部分修改 本文假定你的MyBatis与Spring环境已经搭建完毕,数据结构及测试数据也已经导入数据库,实体类(Customer.java)也已经创建,接口类与接口映射文件都已经建立,参考:MyBatic与Spring的整合,Mapper接口方式的开发
阅读全文
摘要:本文摘自:Java EE企业级应用开发教程,有部分修改 在MyBatis+Spring项目中,虽然使用传统DAO的开发可以实现所需功能,但是采用这种方式在实现类中会出现大量重复代码,在方法中也需要指定映射文件中执行语句的Id,并且不能保证编写时的Id的正确性(运行时才能知道)。为此,我们可以使用My
阅读全文
摘要:本文摘自:Java EE企业级应用开发教程,有部分修改 一、整合环境搭建 1、准备JAR包 Spring框架所需的JAR包(注意:不一定是MyBatis必须要用这些包,而是作为整体开发环境,这些包是必须的) springaspectj_lib(用户类库名,自定义的) aopalliance-1.0.
阅读全文
摘要:本文转载自:https://zhuanlan.zhihu.com/p/40530920,略做修改 一、前言 什么是 Mybatis 动态 SQL 呢? 根据用户提供的参数,动态决定查询语句依赖的条件或者SQL语句的具体内容,这就是动态SQL。 本文主要介绍 Mybatis 动态 SQL的四种主要标签
阅读全文
摘要:假设t_user_test表数据结构及数据如下,我们需要对此表按user_name和sex进行查询,有如下几种方式: 方式一:顺序传递参数法 1. Mapper映射文件写法参考如下代码 <select id="selectUserByUsernameAndSex" resultType="TUser
阅读全文
摘要:MyBatis映射文件中的<resultMap>元素中,包含一个<collection>子元素,MyBatis通过它来处理多对多关联关系。 <collection>子元素的大部分属性与<association>子元素相同,但其还包含一个特殊属性——ofType。ofType属性与javaType属性
阅读全文
摘要:MyBatis映射文件中的<resultMap>元素中,包含一个<collection>子元素,MyBatis通过它来处理一对多关联关系。 <collection>子元素的大部分属性与<association>子元素相同,但其还包含一个特殊属性——ofType。ofType属性与javaType属性
阅读全文
摘要:MyBatis映射文件中的<resultMap>元素中,包含一个<association>子元素,MyBatis通过它来处理一对一关联关系。 association重要属性 property : 映射数据库列的实体对象的属性 column : 映射数据库列名或者别名 javaType : 完整jav
阅读全文
摘要:一、背景介绍 MyBatis,在进行select映射的时候,返回类型可以用resultType,也可以用resultMap;resultType表示直接返回类型,而resultMap则是对外部ResultMap的引用;resultType跟resultMap不能同时存在。在MyBatis进行查询映射
阅读全文
摘要:MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。在MyBatis开发中,涉及到主要开发要素是:Dao接口类,Mapper映射文件,以及PO类。它们之间的关系如下: 映射器(mapper)的XML文件,有几个顶级元素: select
阅读全文
摘要:一、MyBatis核心对象 1. SqlSessionFactory SqlSessionFactory是MyBatis框架中十分重要的对象,它是单个数据库映射关系经过编译后的内存镜像,其主要作用是创建SqlSession。可以利用SqlSessionFactoryBuilder对象,通过XML配置
阅读全文
摘要:功能:实现Mapper接口,封装SqlSession之类的调用,进一步简化程序的调用,就像操作普通对象一样,感觉不到后台数据库 预备:请先阅读MyBatis之工作原理,简单实体的增加、修改、删除、查询 一、目录结构 com.clzhang.mybatis.entity ProductBean.jav
阅读全文
摘要:一、MyBatis之工作原理 MyBatis是一个半自动映射框架。所谓半自动,是相对Hibernate全表映射而言的,MyBatis需要手动匹配提供POJO、SQL和映射关系。 我们知道,JDBC有四个核心对象:(1)DriverManager,用于注册数据库连接(2)Connection,与数据库
阅读全文
摘要:上一篇文章讲了上传单个文件与上传多个文件(属性驱动)的例子。本例是上传多个文件(属性驱动),并且显示进度条、进度详细信息的示范。在文件上传选择界面,允许用户增加、删除选择的文件,且只能上传指定类型的文件;在文件上传选择界面,不允许用户直接输入文件名,必须通过按钮选择文件;上传过程中,利用jQuery的progressbar的widget插件显示当前上传进度的百分比;上传过程中,利用一个DIV显示上传进度的详细信息。目录1. 设计上传的JSP页面(uploadTest3.jsp) 1.1 关于jQuery的进度条,有三段代码 1.2 轮询后台查询进度2. 显示处理结果的JSP页面(showR..
阅读全文
摘要:文件上传功能在Struts2中得到了很好的封装,主要使用fileUpload上传组件。1. 单个文件上传1.1 创建上传单个文件的JSP页面、显示提交结果的JSP页面uploadTest1.jsp 注意:代码中加入了enctype="multipart/form-data";而且使用了标签,尤其注意的name属性。showResult1.jsp 您上传的文件名为:,存放目录: 点...
阅读全文
摘要:在struts2:OGNL表达式,遍历List、Map集合;投影的使用一文中已经讲述了OGNL遍历List、Map集合等功能。本文简单写一个遍历数组的示范程序。1. 遍历自定义字符串数组 输出:2. 遍历Action实例所引用对象中的数组Action类UploadTest2Action,引用FileUploadTools类;FileUploadTools类中包含uploadFileFileName的数组,要求在JSP中遍历此数组。Uplo...
阅读全文
摘要:拦截器(Interceptor)是Struts 2的核心组件,Struts 2框架的大部分功能都是通过拦截器来完成的,例如数据校验,国际化,文件上传和下载等。为了实现这些功能,Struts 2框架提供了一个强大的拦截器策略。拦截器是Struts 2框架中的重要组成部分,它是AOP(面向方向编程)思想的一种实现。使用拦截器给开发过程带来了很多好处:可以把大问题分解成多个小问题以便分别处理,同时可以使Action更专注于处理的事情,而把其他的一些相关功能分配给各个拦截器来进行处理。在Struts 2中可将各个功能应的拦截器分开定义,每个拦截器完成单个功能,如果要运用某个功能就加入对应的拦截器,实现
阅读全文
摘要:非表单标签主要用于输出在Action中封装的信息,这在实际运用中是很常见的。1. actionerror标签标签主要用于输出错误信息到客户端,该标签将Action中的信息输出到页面中,实际上,该标签输出的信息是Action实例中的getActionErrors()方法的返回值。2. actionmessage标签标签主要用于输出提示错误信息到客户端,该标签将Action中封装的信息封装到页面中,实际上,该标签输出的信息是Action实例中的getActionMessage()方法的返回值。3. component标签标签主要用于使用自定义标签、模板、主题等。自定义标签、模板、主题可以通过标签来
阅读全文
摘要:前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通过Struts2框架提供的validateX()方法来准确校验Action中的某一个方法,其中X表示处理逻辑的方法名。还是以前的例子,换一种写法,来说明validate()方法和validateX()方法的用法。1. 创建前台JSP页面表单录入页面:registerM.jsp 账号:${errors.username[0]} ...
阅读全文
摘要:Struts2框架提供了自己的异常处理机制,只需要在struts.xml文件中配置异常处理即可,而不需要在Action方法中来捕捉异常。传统方法public String execute() throws Exception { try{ //... return SUCCESS; }catch(SQLException ex) { // SQL异常,返回ERROR ex.printStackTrace(); return ERROR; }catch(InvalidInputException ex) ...
阅读全文