Mybatis 使用:
简介:
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
对jdbc的封装框架有哪些:Hibernate,dbutils,jdbcTemplate[spring],mybatis
原理:Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
|
No1:简单版步骤:
- 创建PO(model)类,根据需求创建;
2.创建全局配置文件SqlMapConfig.xml;
3.编写映射文件;
在classpath下,创建sqlmap文件夹。在sqlmap目录下,创建User.xml映射文件。(文件夹名字可以识别的哈 不一定要是这个。)
4.加载映射文件,在SqlMapConfig.xml中进行加载; (通过mappers标签)
5.编写测试程序,即编写Java代码,连接并操作数据库。
思路:
- 读取配置文件;
- 通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
- 通过SqlSessionFactory创建SqlSession。
- 调用SqlSession的操作数据库方法。
- 关闭SqlSession。
更多操作:(部分)
如上可知:在映射文件中对于不同的sql操作使用不同的标签 如查询 使用<select> 插入使用<insert> 删除使用<delete>
No2:Mapper代理方式实现
上边简单版方式:使用四个文件(实现类、全局配置文件、映射文件、测试类)
Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可。Mybatis会自动的为mapper接口生成动态代理实现类。
不过要实现mapper代理的开发方式,需要遵循一些开发规范。
开发规范
一一对应 通过规范式的开发mapper接口,可以解决原始dao开发当中存在的问题:
|
步骤:
第一步:写一个接口和一个对应的映射文件,如UserMapper.xml和UserMapper接口
第二步:添加映射配置文件
第三步:测试类
非代理方式是打开后就直接使用session去操作(且用的方法selectone是mybatis自带的),代理方式要getmapper
No3:全局配置文件其它配置:
1.properties数据库文件配置
在src下配置一个db.properties文件:
修改全局的配置文件
方便更换数据库信息
2.别名typeAliases
别名是使用是为了在映射文件中,更方便的去指定参数和结果集的类型,不再用写很长的一段全限定名。
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 |
自定义别名:单个定义和批量配置
4.mappers
<mapper resource=’’/>
使用相对于类路径的资源
如:<mapper resource="sqlmap/User.xml" />
<mapper url=’’/> 【不用】
使用完全限定路径
如:<mapper url="file:///D:\workspace_spingmvc\mybatis_01\config\sqlmap\User.xml" />
<mapper class=’’/>
使用mapper接口的全限定名
如:<mapper class="cn.gyf.mybatis.mapper.UserMapper"/>
也可使用注解开发,把xml文件删除
Spring的注解形式:@Repository、@Service、@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean。
No4:mybatis
输入映射ParameterType:指定输入参数的java类型,可以使用别名或者类的全限定名。它可以接收简单类型,POJO对象、HashMap。
输出映射 resultType/resultMap:
resultType
使用resultType进行结果映射时,查询的列名和映射的pojo属性名完全一致,该列才能映射成功。
如果查询的列名和映射的pojo属性名全部不一致,则不会创建pojo对象;
如果查询的列名和映射的pojo属性名有一个一致,就会创建pojo对象。
resultMap
就是用来解决 查询出的列名和属性名字不一致
因为:
如果查询出来的列名和属性名不一致,通过定义一个resultMap将列名和pojo属性名之间作一个映射关系。
- 定义resultMap
2、使用resultMap作为statement的输出映射类型