MyBatis要点1

MyBatis是一个ORM框架,简化数据库操作,通过XML或注解实现对象与表的映射。它包括SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession等核心对象。在使用时需要配置映射文件,创建SqlSession执行SQL。Mapper映射文件中注意namespace、id、parameterType和resultType的设置。MyBatis支持驼峰映射,提供别名配置,并能通过getMapper方法与接口结合。此外,它还涉及#{}与${}的区别,以及最佳实践建议,如避免单一单词的命名,推荐使用包装类等。
摘要由CSDN通过智能技术生成

1.什么是 MyBatis?
是对jdbc的轻量级封装,是一个orm对象关系映射框架,(通过xml或注解的方式,把实体类与表之间做映射关系),目的是为了
简化开发,达到以OOP的方式来操作数据库(不写sql)。
dbutils是一个jdbc组件;
mybatis–>mybatis-plus(大大提高开发效率)
mybatis是一个半自动的orm框架,还要写sql.

2.使用mybatis
2.1 安装环境:
mybatis的核心jar包;数据库驱动包
2.2 创建xml文件:
xml配置文件mybatis-config.xml,一般这个文件放src根目录
xml映射文件blog-mapper.xml,这个文件放dao包下;
把映射文件放在配置文件中;
2.3 从xml文件构建SqlsessionFactory对象
该对象的创建,需要依赖数据源;需要映射文件信息
2.4 获取 SqlSession
2.5 执行操作

3.核心对象:
SqlSessionFactoryBuilder:
用来加载文件,创建Facotyr,用完即销毁。
SqlSessionFactory:
该对象全局唯一。
openSession()
SqlSession:
执行数据库操作,openSession创建对象,执行操作,操作完成后关闭对象。
Object obj = selectOne(“映射文件的namespace.标签id”,查询参数)
List selectList(“namesapce.id”,查询参数)
T t = getMapper(Class clz)

4.mapper映射文件中的注意点:
namespace:必须唯一,不同文件不能同名的namesapce
查询语句的标签必须是select,id在同一个mapper文件中不能同名,paramterType:表示参数类型;resultType:返回值类型,表示对数据库表单行记录的封装类型。
在sql语句中获取参数的语法:#{简单类型的随便写,对象类型的写成员变量名,}

5.SqlSession的getMapper方法:
映射文件的namespace必须是接口的全名称
id必须是接口中的方法名

6.如何多参数传递
5.1 封装实体
5.2 封装map,适合于多参数不属于同一个实体
5.3 加注解@Param,加到mapper接口的方法形参上。

7.别名配置:别名忽略大小写。注意类名绝对不能重复,mybatis提供了常见的简单类型的内建别名。Map-map,String-string,Date-date


8.settings标签:
在运行过程中把sql语句打印。



mybatis支持驼峰映射,把下划线分割的字段映射成实体类驼峰命名

9.跟踪源码:
XMLConfigBuilder:xml配置文件解析对象,构建器build模式,用来构建对象。
Configuration configuration
parse(),返回Configuration配置对象。

XMLMapperBuilder:xml映射文件的解析对象,最重要的是得到mappedStatements集合
    parse(),解析mapper.xml,重点在于解析SELECT|INSERT|UPDATE|DELETE四类标签

Configuration:配置对象,把xml配置文件数据读取到该对象
    Environment:数据库环境,数据库连接信息
    TypeAliasRegistry:类型别名注册,别名信息
    Map<String, MappedStatement> mappedStatements:sql映射结果集,key:namespace.id,value:MappedStatement(操作类型,sqlResource)
    variables:properties资源配置信息。

DefaultSqlSessionFactory implements SqlSessionFactory
    Configuration configuration

MappedStatement:相当于一个select|update|delete|insert标签的解析结果

DefaultSqlSession implements SqlSession
    Configuration configuration;

Executor:执行器对象。
    用来执行具体的数据库操作

总结:
    SqlsessionFactoryBuilder.build()
        XMLConfigBuilder与XMLMapperBuilder是为了解析xml配置与xml映射文件,得到Configuration对象
        创建出SqlsessionFactory对象,持有Configuration对象对象:new DefaultSqlSessionFactory(Configuration config)
    opensession()
        得到Executor执行器对象。打开Connection连接
    selectOne或selectList的时候:
        根据传递进去的String(namespace.id)去Configuration得到一个具体的MappedStatement对象,执行query方法进行数据库查询,结果集封装。
    getMapper方法:
        该方法传入接口的类对象,返回代理对象。

10.代理模式:proxy
作用:当一个已经存在的对象中的某个方法不满足需求,此时需要代理模式。
静态代理:
创建代理类,必须与被代理对象同类型;代理对象必须持有被代理对象。

动态代理:
    代理类不再手工创建,在程序运行期间动态的在jvm内创建的代理类,并编译。

11.#{}与${}:
写在映射文件中,sql语句获取参数.
#{} sql语句使用?占位符,PreparedStatement.
不 使 用 占 位 符 , S t a t e m e n t , 平 常 不 用 , 但 是 如 果 参 数 是 表 名 , 字 段 名 等 s q l 语 句 的 语 法 部 分 。 必 须 使 用 {} 不使用占位符,Statement,平常不用,但是如果参数是表名,字段名等sql语句的语法部分。必须使用 使Statementsql使{}
select ${} from blogs where bid=#{} order by ${} ${}

12.注意点:
以后建数据库表,起码create_time与update_time必须有,查询排序使用。
Date:日期类型。数据库使用timestamp类型,可以设置CURRENT_TIMESTAMP默认日期,可以设置根据时间戳更新。
实体类使用Date,String,建议使用String,如果使用Date到springMVC框架会带来麻烦。
在命名(类名,成员变量名,包名,数据库字段名)的时候,不允许出现单个单词。
在实体类,方法形参出现变量建议都使用包装类对象。
private String bName;首字母小写,紧跟字母大写
private String isOk;//不允许成员变量名is开头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值