1、简介 什么是Mybatis
2、第一个Mybatis程序
2.1 搭建环境
2.2 创建一个模块
2.3 编写代码
3、CURD
namespace
select
Insert
update
Delete
万能Map
模糊查询
4、mybatis-config.xml
核心配置文件标签声明顺序:
属性 properties
设置 Settings
类型别名 typeAliases
其他配置环境配置
environments映射器
mappers
方式一:【推荐使用】
方式二:使用class文件绑定注册
方式三:使用包扫描进行注入作用域和生命周期
5、属性名和字段名不一致的问题resultMap
6、日志日志工厂log4jLog4j简单使用
7、分页
使用Limit分页
RowBounds分页(了解)
pageHelper分页插件
8、使用注解开发面向接口开发使用注解开发关于@Param( )注解#{} 和 ${}
9、Lombok
10、多对一处理
1、sql查询结果,再去嵌套处理
2,联表查询
11、一对多处理
用sql结果注入到集合里
按照查询嵌套处理
resultMap
12、动态SQL
IF标签
SQL片段
foreach
select
insert delete update 所有标签
13、缓存(了解)
13.1 简介
13.2 MyBatis缓存
13.3 一级缓存 / 本地缓存
13.4 二级缓存 / 全局缓存
13.5 缓存原理
1、简介
中文文档:
什么是Mybatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2、第一个Mybatis程序
2.1 搭建环境
1,创建一个普通的maven项目
2,删除src目录 (就可以把此工程当做父工程了,然后创建子工程)
3,导入maven依赖,还有:防止我们资源导出至target.class文件失败的问题
<dependencies> <!--mysqlq驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.12</version> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> </dependency> <!--junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <!--在build中配置resources,来防止我们资源导出失败的问题(很重要!)--> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <!-- 从工程名底下开始,比如 src--> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
如果不在build中配置resources,target。.classes就没有userMapper.xml和其他文件
2.2 创建一个模块
编写mybatis的核心配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db02? userSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="111"/> </dataSource> </environment> </environments> <mappers> <mapper resource="dao/userMapper.xml"/> </mappers> </configuration>
编写mybatis工具类
//sqlSessionFactory --> sqlSession
public class MybatisUtils {
static SqlSessionFactory sqlSessionFactory = null;
static {
try {
//使用Mybatis第一步 :获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();// 要显示写sqlSession.commit();(增删改采用 查不用)
}
}
补:
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);// 自动提交
}
// 自动提交,不需要显示写SqlSession.commit();
2.3 编写代码
实体类
Dao接口
public interface UserDao {
public List<User> getUserList();
}
接口实现类 (由原来的UserDaoImpl转变为一个Mapper.xml配置文件)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="dao.UserDao"> <select id="getUserList" resultType="pojo.User"> select * from user </select> </mapper>
在mybatis核心配置文件中注册每一个mapper.xml文件
<mappers> <mapper resource="dao/userMapper.xml"/> </mappers>
@Test
public void test(){
//1.获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//2.执行SQL
// 方式一:getMapper
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
//关闭sqlSession
sqlSession.close();
可能会遇到的问题:
配置文件没有注册 绑定接口错误 方法名不对 返回类型不对 Maven导出资源问题
3、CURD
namespace
namespace的resource要和Dao/Mapper接口的包名一致:
<mappers> <mapper resource="dao/userMapper.xml"/> </mappers>
select
id:就是对应的namespace中的方法名;
resultType : Sql语句执行的返回值;
parameterType : 参数类型;
public interface UserMapper {
public List<User> getUserList();
public void addUser(User user);
}
编写对应的mapper中的sql语句
<insert id="addUser" parameterType="com.kuang.pojo.User">
insert into user (id,name,password) values (#{id}, #{name}, #{password})
</insert>
测试:
@Test
public void test2() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(3,"黑子","666");
mapper.addUser(user);
sqlSession.commit(); //增删改一定要提交事务
sqlSession.close();
}
Insert update Delete
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="dao.UserDao"> <select id="getUserList" resultType="pojo.User"> select * from user </select> <select id="getUserById" resultType="pojo.User" parameterType="_int"> select * f

本文详细介绍了MyBatis框架,从基本概念到实战应用,包括搭建环境、编写第一个Mybatis程序、CRUD操作、核心配置文件解析、属性名与字段名映射、日志配置、分页实现、注解开发、多对一和一对多处理、动态SQL及缓存机制等内容,旨在帮助读者全面理解MyBatis并提升开发效率。





最低0.47元/天 解锁文章
493





