Mybatis学习

定义:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

maven导包:

org.mybatis mybatis 3.4.6

1.持久化:
数据持久化:就是将程序的数据在持久态和瞬时态转化的过程
为什么持久化:内存的断电即失性质

2.持久层:
2.1:完成持久化的代码块
2.2:层界限明显
数据库创建:

新建项目:
1.建立maven项目
2.删除src
3.导入依赖

创建一个模块
1.编写mybatis的核心配置文件
2.编写mybatis的核心工具类

编写代码:
dao接口

实现类

测试:
资源导出失败问题解决:

  • [



    src/main/resource

    /*.properties
    /.xml

    true


    src/main/java

    **/
    .properties
    **/*.xml

    true


    ]
    mapper.xml在核心注册文件中配置mapper一定要注册

CRUD
1.编写接口
2.编写mapper中的sql语句
3.测试

1.namespace中的包名要和接口中的包名一致
2.select 选择语句
1.id对应namespace中的方法名
2.resultType:Sql语句中的返回值
3. parameterType:参数类型

查询:只需要改接口和实现类(也就是xml中的标签),最后再改一个测试类,测试里面的框架为

增加:
注意:增删改需要提交事务()

万能map:
如果实体类或者数据库中表,字段,或参数过多,可以考虑使用map



1.map传递参数直接在sql中取出key就好了,但是对象传递参数需要直接在sql中取对象的属性
2.多个参数用map或者注解

思考:
模糊查询:
1.Java代码执行的时候,传递通配符% %
2.在sql拼接中使用通配符,可以写死传递的数据,以防sql注入

配置解析
1.核心配置文件
mybatis-config.xml
configuration(配置)

**properties(属性)**
**settings(设置)**
**typeAliases(类型别名)**
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
    environment(环境变量)
        transactionManager(事务管理器)
        dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)

环境配置(environments)
1.MyBatis 可以配置成适应多种环境
2.不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
3.POOLED–: 这种处理方式很流行,能使并发 Web 应用快速响应请求。 (0默认连接池)
4.默认事务管理器:JDBC

属性(properties)
1.我们可以使用properties来实现引用配置文件
2.这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。(db。properties)

1.编写一个配置文件:
db.properties

2.在核心配置文件中引入:

1.可以直接引入外部文件
2.可以在其中增加属性
3.如果有两个文件有同一个字段,优先引用外部文件

类型别名(typeAliases)
1.类型别名可为 Java 类型设置一个缩写名字
2.它仅用于 XML 配置,意在降低冗余的全限定类名书写。

3.也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
扫描实体类的包,他的默认别名就是这个类的类名,首字母小写

注意:在实体类比较少的使用第一种,很多的时候用第二种
第一种可以自定义,第二种不行

设置(settings)
1.这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

映射器
方式一:

方式二:使用class文件绑定注册

方式三:使用扫描包注入绑定

生命周期和作用域
1.生命周期和作用域是至关重要的,因为错误的使用会导致非常严重的并发问题。
2.SqlSessionFactoryBuilder
1.一旦创建了 SqlSessionFactory,就不再需要它了
2.局部变量
3.SqlSessionFactory
1.说白了就是数据库连接词,一旦创建就一直存在
2.全局变量
3.最简单的就是使用单例模式或者静态单例模式。
4.SqlSession
1.链接数据库的请求
2.所以它的最佳的作用域是请求或方法作用域
3.用完就要关闭

posted @   离地一厘米的飞翔  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示