mybatis+spring+springmvc(传智播客)笔记(6)

2019-04-02 15:46

javaEE框架课程

3.3 settings(配置)

mybatis全局配置参数,全局参数将会影响mybatis的运行行为。

详细参见“学习资料/mybatis-settings.xlsx”文件

javaEE框架课程

3.4 typeAliases(类型别名) 3.4.1 mybatis支持别名:

别名 _byte _long _short _int _integer _double _float _boolean string byte long short int integer double float boolean date decimal bigdecimal

映射的类型 byte long short int int double float boolean String Byte Long Short Integer Integer Double Float Boolean Date

BigDecimal BigDecimal

3.4.2 自定义别名:

在SqlMapConfig.xml中配置:

javaEE框架课程

3.5 typeHandlers(类型处理器)

类型处理器用于java类型和jdbc类型映射,如下:

select * from userwhere id = #{id}

mybatis自带的类型处理器基本上满足日常需求,不需要单独定义。

mybatis支持类型处理器:

类型处理器

BooleanTypeHandler ByteTypeHandler ShortTypeHandler IntegerTypeHandler LongTypeHandler FloatTypeHandler DoubleTypeHandler BigDecimalTypeHandler StringTypeHandler ClobTypeHandler NStringTypeHandler NClobTypeHandler ByteArrayTypeHandler BlobTypeHandler DateTypeHandler DateOnlyTypeHandler TimeOnlyTypeHandler SqlTimestampTypeHandler SqlDateTypeHandler SqlTimeTypeHandler ObjectTypeHandler EnumTypeHandler

Java类型

Boolean,boolean Byte,byte Short,short Integer,int Long,long Float,float Double,double BigDecimal String String String String byte[] byte[]

Date(java.util) Date(java.util) Date(java.util)

Timestamp(java.sql) Date(java.sql) Time(java.sql) 任意

Enumeration类型

JDBC类型

任何兼容的布尔值

任何兼容的数字或字节类型 任何兼容的数字或短整型 任何兼容的数字和整型 任何兼容的数字或长整型 任何兼容的数字或单精度浮点型

任何兼容的数字或双精度浮点型

任何兼容的数字或十进制小数类型

CHAR和VARCHAR类型 CLOB和LONGVARCHAR类型

NVARCHAR和NCHAR类型 NCLOB类型

任何兼容的字节流类型 BLOB和

LONGVARBINARY类型 TIMESTAMP类型 DATE类型 TIME类型

TIMESTAMP类型 DATE类型 TIME类型

其他或未指定类型

VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

javaEE框架课程

3.6 mappers(映射器)

Mapper配置的几种方法:

3.6.1

使用相对于类路径的资源

如:

3.6.2

使用完全限定路径

如:

3.6.3

使用mapper接口类路径

如:

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

3.6.4

注册指定包下的所有mapper接口

如:

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

4 Mapper.xml映射文件

Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。

javaEE框架课程

4.1 parameterType(输入类型)

4.1.1 #{}与${}

#{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?。

select * from userwhere id = #{id}

使用占位符#{}可以有效防止sql注入,在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

${}和#{}不同,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。使用${}不能防止sql注入,但是有时用${}会非常方便,如下的例子:

select * from userwhere username like '%${value}%'

如果本例子使用#{}则传入的字符串中必须有%号,而%是人为拼接在参数中,显然有点麻烦,如果采用${}在sql中拼接为%的方式则在调用mapper接口传递参数就方便很多。

//如果使用占位符号则必须人为在传参数中加%

List list = userMapper.selectUserByName(\管理员%\);

//如果使用${}原始符号则不用人为在参数中加%

Listlist = userMapper.selectUserByName(\管理员\);

再比如order by排序,如果将列名通过参数传入sql,根据传的列名进行排序,应该写为: ORDER BY ${columnName}

如果使用#{}将无法实现此功能。


mybatis+spring+springmvc(传智播客)笔记(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:阅读教学魂归何处

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: