MyBatis配置与CRUD使用的方法是什么(crud,mybatis,开发技术)

时间:2024-05-05 15:25:17 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    MyBatis%E9%85%8D%E7%BD%AE%E4%B8%8ECRUD%E4%BD%BF%E7%94%A8%E7%9A%84%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88

namespace:命名空间 必须绑定一个对应Mapper接口

使用全限定名: com.yuqu.Dao.UserMapper

id:对应上面的Mapper接口下面的某一方法名

resultType:表示返回结果类型 如:com.yuqu.pojo.User

parameterType:参数类型,基本数据类型通常忽略不写

增删改切记提交事务:sqlSession.commit();

在确保已经配置好了mybatis-config.xml核心配置文件之后,我们每次需要操作sql时,就只需要操作接口UserMapper和UserMapper.xml配置文件即可

UserMapper.xml

Test代码(仅以添加为例)

上述UserMapper.xml所示,如果参数过多时,当我们进行添加操作或者修改操作就会非常麻烦。所以,可以优化采用Map来进行可选参数。以查询用户selectUser为例:

map传递参数,可以直接在sql中获取key,实现定制化参数

对象传递参数,直接在sql中取出sql的对象属性。但要保证字段名相同

基本数据类型时直接在sql中获取

还有一种方式就是直接把sql固定写死,获取用户输入的一个稳定的值

参考mybatis官网给出的配置信息:

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

mybatis可以配置多种环境,但每个sqlSessionFactory智能选择一个环境

一个数据库对应一个SqlSessionFactory

我们可以在environments元素下配置多个环境environment,每个环境都需要设置单独的id,当我们需要用到哪一个的时候就需要将default设置为哪一个环境的id

environments下包含

事务管理器transactionManger

事务管理器不仅有JDBC一种,还有一种 MANAGED

MyBatis官网提示: 如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为Spring 模块会使用自带的管理器来覆盖前面的配置

数据源DataSource

之前学过的比如dbcp、c3p0、druid等等。用于连接数据库

mybatis内置了三种数据源:type="[UNPOOLED|POOLED|JND]"

UNPOOLED:表示无池连接,用完即销毁

POOLED:有池连接,用完后回收等待下次使用。(默认情况使用)

JND:表示正常连接

属性可以通过外部文件配置,也可以在Properties的子元素当中配置,在Properties子元素配置如下示例:

也可以通过典型的Java属性文件进行配置,比如db.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&;useUnicode=true&;characterEncoding=UTF-8&;serverTimezone=UTC
username=root
password=123456

最后价格文件用properties标签引入到mybatis-config.xml中,环境则更改为初始形式

通过官网可以知道,我们也可以将db.properties中的配置信息只写一半,另一半在引入的同时用双标签闭合,在其中用properties的子标签property重新引入即可

如果同时存在于外部文件和property中,优先使用外部文件的配置信息

typeAliases用于简化全限定名的书写,仅限于在xml中配置

指定全限定类名别名:

type代表全限定名,将其映射为一个简化名称 user。如上所示在需要用到com.yuqu.pojo.User的地方就可以替换成user

指定包名配置

经此配置后,mybatis会自动查找在com.yuqu.pojo下的所需Java Bean。

在没有对实体类添加注解用法:默认使用Bean的首字母小写的非限定类名来作为它的别名

添加注解的用法:

接下来就可以在任何要用com.yuqu.pojo.User的地方使用hello代替

建议在实体类较少的情况下使用第一种指定全限定类名的别名

实体类较多时可以使用指定包名配置

其他的Java类型内建的别名可以参考MyBatis官网

在定义sql映射语句之前,首先我们要告诉mybatis去哪里获取这些语句。这个时候就需要用到映射器mappers,mybatis根据映射的路径去找到对应的文件或者接口再去执行sql语句

映射器使用一:使用相对于类路径的资源引用(建议使用)

映射器使用二:使用class文件的完全限定类名

接口和它的Mapper配置文件必须在同一包下!

接口和它的Mapper配置文件必须同名!

映射器使用使用三:将包内的映射器接口全部注册为映射器

接口和它的Mapper配置文件必须在同一包下!

接口和它的Mapper配置文件必须同名!

错误的使用生命周期和作用域会导致非常严重的并发问题

SqlSessionFactoryBuilder:

创建SqlSessionFactory工厂使用,一旦创建了SqlSessionFactory就不再需要使用它

最佳作用域是方法域(局部方法变量)

SqlSessionFactory:

SqlSessionFactory用于生产SqlSession实例

一旦创建就应该一直存在于程序的运行期间,不要丢弃或尝试重新创建另一个SqlSessionFactory

可以采用单例模式来保证唯一的SqlSessionFactory

最佳作用域是全局作用(应用作用域)

SqlSession:

SqlSession用于执行已映射的sql指令

每个线程都有自己的SqlSession实例,因为它不是线程安全的不能被共享

最佳作用域是方法域或者请求域

本文:MyBatis配置与CRUD使用的方法是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python字符串数组互转问题如何解决下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18