mybatis入门篇(一)

本文详细介绍MyBatis框架的基本概念及开发流程,包括环境搭建、核心配置文件编写、映射文件设计、CRUD操作实现等关键步骤。同时,还探讨了SqlSession的正确使用方式及mapper代理开发模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis通过xml方式或注解方式将需要执行的各种statementstatementpreparedStatemntCallableStatement)对象配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql将结果映射成java对象并返回。MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架MyBatis避免了几乎所有的 JDBC代码手动设置参数以及获取结果集MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和JavaPOJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

1. mybatis开发流程

1.1 mybatis框架


1.2  添加mybatis依赖包(加入mybatis核心包、依赖包、数据驱动包

方式一:(复制jar包到lib目录下面(不推荐使用)略)

方式二:maven管理
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.43</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.2</version>
</dependency>
<dependency>
    <groupId>org.mybatis.caches</groupId>
    <artifactId>mybatis-ehcache</artifactId>
    <version>1.1.0</version>
</dependency>

1.3 mybatis开发步骤

1)编写核心配置文件:mybatis-config.xml


加载后面的映射文件:


2pojo模型创建:实体类创建


3)编写映射文件:XXXMapper.xml文件


4)通过配置文件创建SqlSessionFactory

5)通过SqlSessionFactory获取SqlSession

6CRUD操作:通过SqlSession操作数据库

7)事务操作:如果执行添加、更新、删除需要调用SqlSession.commit()

8)关闭SqlSession


2. mybatis代码实现

2.1 使用User.xml,添加根据用户名称模糊查询用户信息的sql语句。

2.1.1 映射文件

2.1.2 代码部分


2.2 添加用户信息

2.2.1 映射文件


2.2.2 代码部分


2.2.3 自增主键返回

mysql自增主键,执行insert提交之前自动生成一个自增主键。通过mysql函数获取到刚插入记录的自增主键:LAST_INSERT_ID()是insert之后调用此函数。修改insertUser定义:


后面修改删除和查找大同小异(略过)

2.2.3 #{}和${}区别

#{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojohashmap如果接收简单类型,#{}中可以写成value或其它名称。#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。${}接收输入参数,类型可以是简单类型,pojohashmap。如果接收简单类型,${}中只能写成value。${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

2.2.4 selectOne和selectList

selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)。selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne。如果使用selectOne

报错:org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 4

3. SqlSession使用范围

3.1 SqlSessionFactoryBuilder

通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessionFactoryBuilder。在需要创建SqlSessionFactory时候,只需要new一次SqlSessionFactoryBuilder即可。

3.2 SqlSessionFactory


通过SqlSessionFactory创建SqlSession,使用单例模式管理sqlSessionFactory(工厂一旦创建,使用一个实例)。将来mybatis和spring整合后,使用单例模式管理sqlSessionFactory

3.3 SqlSessionFactory


SqlSession是一个面向用户(程序员)的接口。SqlSession中提供了很多操作数据库的方法:如:selectOne(返回单个对象)selectList(返回单个或多个对象)、。SqlSession是线程不安全的,在SqlSesion实现类中除了有接口中的方法(操作数据库的方法)还有数据域属性。SqlSession最佳应用场合在方法体内,定义成局部变量使用。

4. mapper代理开发(动态代理)


序员还需要编写mapper.xml映射文件。程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。

开发规范:

1、在mapper.xmlnamespace等于mapper接口地址


2、mapper.java接口中的方法名和mapper.xmlstatementid一致

3、mapper.java接口中的方法输入参数类型和mapper.xmlstatementparameterType指定的类型一致。

4、mapper.java接口中的方法返回值类型和mapper.xmlstatementresultType指定的类型一致。


4.1 编写mapper.xml


4.2 SqlMapConfig.xml中加载mapper.xml


4.3 测试代码


4.4 代理对象内部调用selectOneselectList

如果mapper方法返回单个pojo对象(非集合对象),代理对象内部通过selectOne查询数据库。如果mapper方法返回集合对象,代理对象内部通过selectList查询数据库。

5. SqlMapConfig.xml

mybatis的全局配置文件SqlMapConfig.xml,配置内容顺序如下:

properties(属性)->settings(全局配置参数)->typeAliases(类型别名)->typeHandlers(类型处理器)    ->objectFactory(对象工厂)->plugins(插件)->environments(环境集合属性对象)->environment(环境子属性对象)->transactionManager(事务管理)->dataSource(数据源)->mappers(映射器)












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值