✨✨个人主页:沫洺的主页
📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏
📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏
📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏
💖💖如果文章对你有所帮助请留下三连✨✨
🌷MyBatis参考文档
💐入门案例
案例需求:查询user表中所有数据
步骤
1.创建user表,添加数据
2.创建模块,导入坐标
3.编写MyBatis核心配置文件-->代替连接信息 解决硬编码问题
4.编写SQL映射文件-->统一管理sql语句,解决硬编码问题
5.编码
1.定义POJO类(案例是User)
2.加载核心配置文件,获取SqlSessionFactory对象
3.获取SQLSession对象,执行SQL语句
4.释放资源
🌾1. 创建数据库-->表(user)-->添加数据
create database mybatis; use mybatis; drop table if exists tb_user; create table tb_user( id int primary key auto_increment, username varchar(20), password varchar(20), gender char(1), addr varchar(30) ); INSERT INTO tb_user VALUES (1, '张三', '123', '男', '北京'); INSERT INTO tb_user VALUES (2, '李四', '456', '女', '上海'); INSERT INTO tb_user VALUES (3, '王五', '789', '男', '广州');
🍂2.IDEA工具创建模块-->导入坐标
使用IDEA创建maven项目模块(省略)
然后导入坐标(添加依赖)
<dependencies> <!--mybatis的依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <!--MySQL驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <!--测试单元--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> <!-- 添加slf4j日志api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.20</version> </dependency> <!-- 添加logback-classic依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- 添加logback-core依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> </dependencies>
其中日志还需要一个配置文件
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- CONSOLE :表示当前的日志信息是可以输出到控制台的。 --> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern> </encoder> </appender> <logger name="com.moming" level="DEBUG" additivity="false"> <appender-ref ref="Console"/> </logger> <!-- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF , 默认debug <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。 --> <root level="DEBUG"> <appender-ref ref="Console"/> </root> </configuration>
🌿3.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> <!--起别名别名,目的是简化映射文件中的resultType--> <typeAliases> <!--路径是User类的相对路径--> <package name="com.moming.pojo"/> </typeAliases> <!--指定连接哪个数据库(default对应id)--> <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:///mybatis?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <!--加载数据库的映射文件--> <!--加载是为了执行映射配置文件中的sql语句--> <mapper resource="UserMapper.xml"/> </mappers> </configuration>
🍁4.mybatis的映射配置文件
一般定义什么类就叫-->什么类名Mapper
<?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"> <!--namespace:名称空间--> <!--通过namespace区分文件(一般会有很多映射配置文件)--> <mapper namespace="test"> <!--sql语句写这里--> <!--id是sql语句的唯一标识,通过id区分sql语句--> <!--resultType对应返回结果的类型(数据包装成什么类型就写什么类型)--> <!--这里resultType路径简化了resultType="com.moming.pojo.User"到resultType="User"--> <select id="selectAll" resultType="User"> select * from tb_user; </select> </mapper>
只有select语句有resultType,用于指定查询的结果封装成什么类型(返回值类型)
🍃5.编码
1.定义POJO类(案例是User类)
创建一个测试类-->MyBatisDemo
2.加载核心配置文件,获取SqlSessionFactory对象
3.获取SQLSession对象,执行SQL语句
- SQLSession是mybatis的核心对象,既能控制事物,也能执行sql
4.执行sql
SQLSession对象(sqlSession)
sqlSession.selectList就是将查询的结果封装成list集合
sqlSession.update返回值就是执行成功的行数,int类型
sqlSession.selectOne返回值类型是T类型,需要强转
5.释放资源
package com.moming; import com.moming.pojo.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; import java.util.List; /** * 入门代码 */ public class MyBatisDemo { public static void main(String[] args) throws IOException { //1.加载mybatis的核心配置文件,获取SqlSessionFactory //定义核心配置文件的路径(注意和实际文件一致) String resource = "mybatis-config.xml"; //资源加载返回字节输入流 //根据名字利用类加载器从源码目录加载核心配置文件并生成一个输入流对象 InputStream inputStream = Resources.getResourceAsStream(resource); //获取工厂 //利用mybatis提供的工厂类读核心配置文件中的内容,生成一个工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2.获取SqlSession对象,用它来执行sql //从工厂中解析核心配置文件中的内容,并将解析出来的所有内容保存到一个容器中(map类型容器) //在映射配置文件中配置的方法名(id)当成map的key,sql语句当成value SqlSession sqlSession = sqlSessionFactory.openSession();//openSession()默认openSession(true)开启事务,不会自动提交,false关闭事务自动提交 //3.执行sql //参数就是sql语句的唯一标识 //自动封装结果集 //定位在哪个映射配置文件的哪个sql语句 List<User> users = sqlSession.selectList("test.selectAll"); System.out.println(users); //4.释放资源 sqlSession.close(); } }
运行