跟我学IBatis框架技术及应用(第3部分)

  • 格式:pdf
  • 大小:426.12 KB
  • 文档页数:15

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

杨教授工作室,版权所有,盗版必究,1/15页1目录

1.1ORMapping半自动化的IBatis框架(第3部分).......................................................2

1.1.1应用JDBC连接的属性文件分离数据库连接参数.............................................2

1.1.2应用标签在外部定义属性与字段之间的映射关系.......................4

1.1.3查询的返回结果为ArrayList集合........................................................................7

1.1.4应用动态SQL语句提高数据访问的灵活性......................................................11

1.1.5应用typeHandlers组件技术及相关示例............................................................14杨教授工作室精心创作的优秀程序员职业提升必读系列资料

杨教授工作室,版权所有,盗版必究,2/15页21.1ORMapping半自动化的IBatis框架(第3部分)

1.1.1应用JDBC连接的属性文件分离数据库连接参数

1、在项目中添加一个属性文件

(1)文件名称为jdbcParameters.properties

(2)设计该文件的内容

jdbcDirverClassName=com.mysql.jdbc.Driver

dataBaseURL=jdbc:mysql://127.0.0.1:3306/webcrm

userName=root

userPassWord=root杨教授工作室精心创作的优秀程序员职业提升必读系列资料

杨教授工作室,版权所有,盗版必究,3/15页

3注意在每个属性定义的值中不要包含有空格,最后一定要以“回车”结束,否则会出现下面的错误:

(3)在系统总配置文件mybatis-config.xml中引用这些属性参数

"http://mybatis.org/dtd/mybatis-3-config.dtd">

type="com.px1987.webcrm.pobject.UserInfoPO"/>

杨教授工作室精心创作的优秀程序员职业提升必读系列资料

杨教授工作室,版权所有,盗版必究,4/15页4

其中的标签定义了外部化的可替代的属性定义,然后在系统总配置文件中

作为变量使用。

1.1.2应用标签在外部定义属性与字段之间的映射关系

1、标签的语法

(1)应用示例

标签中的id属性命名该标签的定义,而其中的标签定义数杨教授工作室精心创作的优秀程序员职业提升必读系列资料

杨教授工作室,版权所有,盗版必究,5/15页5据库表中的主键和属性之间的映射,而每一个标签元素则定义非主键字段与PO类

中成员属性对应的映射。尽管在每一个标签元素中有比较多的属性参数,其中的

property和column属性参数是必须的,其它的属性参数都是可选的。

本示例定义了两种不同形式的,分别为返回HashMap和返回UserInfoPO。

应用该方式,可以满足在PO类中的成员属性与数据库表字段不同名的应用。

(2)和标签中的其他成员属性

property:映射到列结果的成员属性。

Column:来自数据库的的列名,如果是复合主键,可以指定多个列名并通过column=

“{prop1=col1,prop2=col2}”这种语法来传递给嵌套查询语句。这会引起prop1和

prop2以参数对象形式来设置给目标嵌套查询语句。

javaType:一个Java类的完全限定名或一个类型别名。如果映射到一个JavaBean,

MyBatis通常可以断定类型。然而,如映射到的是HashMap,那么应该明确地指

定javaType来保证所需的行为。

jdbcType:指定在数据库表中的数据类型,而该类型是仅仅需要对插入,更新和删

除操作可能为空的列进行处理。这是JDBC的需要,而不是MyBatis的。如果直

接使用JDBC编程,需要指定这个类型,但仅仅对可能为空的值。

typeHandler:使用这个属性,可以覆盖默认的类型处理器。这个属性值是类的完全

限定名或者是一个类型处理器的实现,或者是类型别名。

MyBatis支持下列JDBC类型,通过JdbcType枚举:BIT,FLOAT,CHAR,

TIMESTAMP,OTHER,UNDEFINED,TINYINT,REAL,VARCHAR,BINARY,BLOB,

NVARCHAR,SMALLINT,DOUBLE,LONGVARCHAR,VARBINARY,CLOB,NCHAR,

INTEGER,NUMERIC,DATE,LONGVARBINARY,BOOLEAN,NCLOB,BIGINT,

DECIMAL,TIME,NULL,CURSOR。

2、在标签中应用标签的定义

parameterType="aliasOfUserInfoPO">

select*fromuserInfo

whereuserName=#{userName}anduserPassWord=#{userPassWord}

杨教授工作室,版权所有,盗版必究,6/15页6parameterType="java.lang.String">

select*fromuserInfowhereid=#{userID}

注意此时将要去掉resultType属性定义,因为resultType属性定义要求PO类中的成员

属性和数据库表字段同名,但应用标签则可以在外部定义两者之间的映射关

系。

使用标签可控制数据如何从结果集中取出,以及哪一个成员属性匹配哪一

个字段,并允许指定字段的数据类型,实现数据类型之间的转换。

3、userInfoDAOMapper.xml配置文件的内容

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

insertintouserInfo(id,userName,userPassWord,userType)

values(#{userID},#{userName},#{userPassWord},#{userType})