✨✨个人主页:沫洺的主页
📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏
📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏
📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏
💖💖如果文章对你有所帮助请留下三连✨✨
案例需求:查询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> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>3.5.5version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>5.1.49version> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>4.13version> <scope>testscope> dependency> <dependency> <groupId>org.slf4jgroupId> <artifactId>slf4j-apiartifactId> <version>1.7.20version> dependency> <dependency> <groupId>ch.qos.logbackgroupId> <artifactId>logback-classicartifactId> <version>1.2.3version> dependency> <dependency> <groupId>ch.qos.logbackgroupId> <artifactId>logback-coreartifactId> <version>1.2.3version> dependency> dependencies>其中日志还需要一个配置文件
"1.0" encoding="UTF-8"?> <configuration> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %npattern> encoder> appender> <logger name="com.moming" level="DEBUG" additivity="false"> <appender-ref ref="Console"/> logger> <root level="DEBUG"> <appender-ref ref="Console"/> root> configuration>
🌿3.mybatis核心配置文件
"1.0" encoding="UTF-8" ?> configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <package name="com.moming.pojo"/> typeAliases> <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> <mapper resource="UserMapper.xml"/> mappers> configuration>
🍁4.mybatis的映射配置文件
一般定义什么类就叫-->什么类名Mapper
"1.0" encoding="UTF-8" ?> mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="test"> <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语句 Listusers = sqlSession.selectList("test.selectAll"); System.out.println(users); //4.释放资源 sqlSession.close(); } }运行