mybatis开发1

创建mybatis工程

  • 配置mybatis的运行环境,数据源,事务等(sqlMapConfig.xml)
  • 创建PO类
  • 创建mapper映射文件、接口(名称一致,在同一个目录下)
  • 在sqlMapConfig.xml中加载mapper映射文件
  • 编写程序

 

#{}: 占位符  参数类型:简单类型  pojo  hashmap

如果是简单类型,可以写成value 

如果接收pojo对象值,需要写pojo里面对应的属性名  属性.属性…

 

${}:  拼接符号,会引起sql注入  

参数类型:简单类型  pojo  hashmap

如果接收简单类型,{}中只能写成value

如果接收pojo对象值,需要写pojo里面对应的属性名  属性.属性…

SelectOne   selectList

 

 

 

 

SqlSession  线程不安全

最好的应用场景,定义在方法体里,定义成局部变量

 

 

Mapper代理开发规范

  1. mapper.xml中namespace等于mapper接口地址
  2. mapper.java接口文件中的方法名和mapper.xml中的statemet的 id一致
  3. 接口中方法输入参数类型和xml中statement中的parameterType指定的类型一致
  4. 接口中的方法返回值类型和xml中statement中的resultType指定的类型一致

 

 

用户综合查询(传入一些复杂条件操作方法)

 

 

 

 

 

 

 

 

 

Mybatis全局配置文件  sqlMapConfig.xml ,配置信息如下

properties(属性)

settings(全局配置参数)

typeAliases(类型别名)

typeHandlers(类型处理器)

objectFactory(对象工厂)

plugins(插件)

environments(环境集合属性对象)

environment(环境子属性对象)

transactionManager(事务管理)

dataSource(数据源)

mappers(映射器)

一、properties 属性配置

需求:

把 数据库连接参数单独放在 jdbc.properties文件中,在sqlmapconfig.xml中加载jdbc.properties属性值,就不用再sqlmapconfig.xml中对数据库连接参数硬编码

其他xml文件也可以同时引用jdbc.properties,方便统一管理

 

注意:

Mybatis加载属性顺序

先加载property标签中配置的内容,

再加载外部properties文件中的内容,后面会覆盖前面同名属性

最后会读取 parameterType的属性值,也会覆盖前面的同名属性

属性名尽量做特殊化处理

 

二、settings(全局配置参数)

Mybatis框架在运行时可以调整一些运行参数

比如:开启二级缓存,开启延迟加载。。。

全局参数会影响mybatis运行行为

 

 

 

三、typeAliases(类型别名)

别名:statement对应的一些输入类型parameterType,输出类型resultType对应的属性映射类型

简化程序开发

用户自定义别名:

Mybatis默认支持的别名

别名

映射的类型

_byte

byte

_long

long

_short

short

_int

int

_integer

int

_double

double

_float

float

_boolean

boolean

string

String

byte

Byte

long

Long

short

Short

int

Integer

integer

Integer

double

Double

float

Float

boolean

Boolean

date

Date

decimal

BigDecimal

bigdecimal

BigDecimal

四、typeHandlers(类型处理器)

Mybatis中通过typeHandlers完成jdbc类型和java类型的转换

 

Mybatis 支持的类型处理器

类型处理器

Java类型

JDBC类型

BooleanTypeHandler

Booleanboolean

任何兼容的布尔值

ByteTypeHandler

Bytebyte

任何兼容的数字或字节类型

ShortTypeHandler

Shortshort

任何兼容的数字或短整型

IntegerTypeHandler

Integerint

任何兼容的数字和整型

LongTypeHandler

Longlong

任何兼容的数字或长整型

FloatTypeHandler

Floatfloat

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

DoubleTypeHandler

Doubledouble

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

BigDecimalTypeHandler

BigDecimal

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

StringTypeHandler

String

CHARVARCHAR类型

ClobTypeHandler

String

CLOBLONGVARCHAR类型

NStringTypeHandler

String

NVARCHARNCHAR类型

NClobTypeHandler

String

NCLOB类型

ByteArrayTypeHandler

byte[]

任何兼容的字节流类型

BlobTypeHandler

byte[]

BLOBLONGVARBINARY类型

DateTypeHandler

Datejava.util

TIMESTAMP类型

DateOnlyTypeHandler

Datejava.util

DATE类型

TimeOnlyTypeHandler

Datejava.util

TIME类型

SqlTimestampTypeHandler

Timestampjava.sql

TIMESTAMP类型

SqlDateTypeHandler

Datejava.sql

DATE类型

SqlTimeTypeHandler

Timejava.sql

TIME类型

ObjectTypeHandler

任意

其他或未指定类型

EnumTypeHandler

Enumeration类型

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

 

 

 

 

五、mappers(映射器)

 

输入映射

通过parameterType指定输入参数类型,简单类型,pojo类型,hashmap

 

输出映射

resultType   简单类型,pojo类型,hashmap

 

简单类型:

当查询的结果只有一行且是一列,可以用简单类型

Pojo对象

如果pojo对象跟查询出的结果属性名不一致,则不能映射成功

如果查询结果所有属性都不不一致,不会创建pojo对象。如果有一个一样的就会创建pojo对象,不一致的属性为默认值

 

resultMap使用方法

如果查询结果属性与pojo属性不一致,可以定义resultMap对属性和列名做一个映射

  1. 定义resultMap

  1. 使用resultMap作为statement的输出映射类型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值