德州整站优化,深圳网站建设好,wordpress 手机插件,wordpress怎么加联系工具01-MyBatis简介
什么是MyBatis?
MyBatis是一款优秀的持久层框架#xff0c;用于简化JDBC开发MyBatis本是Apache的一个开源项目iBatis#xff0c;2010年这个项目由apache software foundation迁移到了google code#xff0c;并且改名为MyBatis。2013年11月迁移到Github官网…01-MyBatis简介
什么是MyBatis?
MyBatis是一款优秀的持久层框架用于简化JDBC开发MyBatis本是Apache的一个开源项目iBatis2010年这个项目由apache software foundation迁移到了google code并且改名为MyBatis。2013年11月迁移到Github官网:https://mybatis.net.cn/getting-started.html
什么是持久层
负责将数据保存到数据库的那一层代码JavaEE三层架构表现层、业务层、持久层
什么是框架
框架就是一个半成品软件是一套可重用的、通用的、软件基础代码模型在框架的基础之上构建软件编写更加高效、规范、通用、可扩展 JDBC的缺点---MyBatis将其解决
两个缺点硬编码和操作繁琐。 MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。
市面上持久层框架有 02-MyBatis快速入门 查询user表中所有数据步骤 创建user表添加数据创建模块导入坐标编写MyBatis核心配置文件 --- 替换连接信息 解决硬编码问题编写SQL映射文件 --- 统一管理sql语句解决硬编码问题编码 定义POJO类加载核心配置文件获取SqlSessionFactory对象获取SqlSession对象执行SQL语句释放资源 1. 创建user表添加数据
-- 创建数据库
CREATE DATABASE mybatis;-- 使用数据库
USE mybatis;-- 如果存在则删除表 tb_user
DROP TABLE IF EXISTS tb_user;-- 创建表 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 (username, password, gender, addr) VALUES (zhangsan, 123, 男, 北京);
INSERT INTO tb_user (username, password, gender, addr) VALUES (李四, 234, 女, 天津);
INSERT INTO tb_user (username, password, gender, addr) VALUES (王五, 345, 男, 西安); 2. 创建模块导入坐标创建Maven添加依赖
什么是导入坐标在Maven中“导入坐标”是指在项目的pom.xml文件中添加依赖项的行为。这里的“坐标”指的是Maven仓库中的依赖项的唯一标识符。叫添加依赖不行吗非要叫导入坐标 打开IDEA创建一个Maven项目。要使用 MyBatis方法一你只需要将 mybatis-x.x.x.jar 文件添加到你的项目的类路径classpath中。
方法二如果你使用 Maven 来构建你的项目你需要将以下依赖代码添加到你的 pom.xml 文件中。
pom.xml: dependencies!-- MyBatis 依赖 --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversionx.x.x/version/dependency!-- ... 其他依赖 ... --/dependencies 请注意你需将 x.x.x 替换为当前的 MyBatis 版本号。本例3.5.16 从 MyBatis 的官方网站或者 Maven 中央仓库以获取最新的版本号并替换上述代码中的 x.x.x 以确保你使用的是最新稳定版本的 MyBatis。
完整pom.xml示例
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdjavaweb_b_mybatis/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencies!-- MyBatis 依赖 --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.16/version/dependency!-- 例如数据库驱动这里以MySQL为例 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.28/version/dependency!-- junit 单元测试 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13/versionscopetest/scope/dependency!-- 添加slf4j日志api --dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.20/version/dependency!-- 添加logback-classic依赖 --dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.2.3/version/dependency!-- 添加logback-core依赖 --dependencygroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactIdversion1.2.3/version/dependency/dependencies
/projectlogback.xml:
logback除了要添加依赖还需要一个配置文件logback.xml 3. 编写MyBatis核心配置文件 --- 替换连接信息 解决硬编码问题
从XML中构建SqlSessionFactoryxml配置文件mybatis-config.xml放在src.main.resources下
mybatis-config.xml:
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configurationenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLED!--数据库连接信息--property namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment/environmentsmappers!--加载sql映射文件--mapper resourceorg/mybatis/example/BlogMapper.xml//mappers
/configuration
MyBatis 配置文件中有【数据库连接信息】需要根据你的实际环境进行修改
${driver}数据库驱动类名称需要替换为实际的驱动类例如 com.mysql.cj.jdbc.Driver。${url}数据库连接 URL需要替换为实际的数据库连接字符串例如 jdbc:mysql://localhost:3306/mybatis或者jdbc:mysql://mybatis?useSSLfalse。${username}数据库用户名需要替换为实际的数据库用户名例如root。${password}数据库密码需要替换为实际的数据库密码例如123456。mapper文件是同级本例改为mapper resourceUserMapper.xml 4. 编写SQL映射文件 --- 统一管理sql语句解决硬编码问题
sql语句映射文件假设操作的是user表文件名就叫UserMapper.xml放在src.main.resources下
UserMapper.xml:
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd!--
mapper根标签
namespace名称空间
--
mapper namespaceorg.mybatis.example.BlogMapperselect idselectBlog resultTypeBlogselect * from Blog where id #{id}/select
/mapper
namespacenamespaceorg.mybatis.example.BlogMapper这是命名空间通常是接口的全限定名。你需要根据实际项目的包结构来修改这个值。本例改为testselect ididselectBlog这是查询的唯一标识符用于在代码中引用。如果你有多个查询需要确保每个查询的 id 都是唯一的。本例是selectAllresultTyperesultTypeBlog这指定了查询结果应该映射到哪个 Java 类。你需要根据实际的 Java 类名来修改这个值。本例是com.itheima.pojo.UserSQL语句select * from Blog where id #{id}这是实际的 SQL 查询语句。你需要确保表名 Blog 和字段名 id 与数据库中的表和字段匹配。此外如果使用了参数需要确保它们与方法调用中的参数一致。本例是select * from tb_user 5. 编码
5.1定义POJO类
com.itheima.pojo.User放在src.main.java下定义属性、getter 和 setter 方法、toString方法
User.java: 什么是POJO类 POJO是Plain Old Java Object的缩写直译为“简单老式Java对象”。它是一个简单的Java类。 5.2加载核心配置文件获取SqlSessionFactory对象
com.itheima.MyBatisDemo放在src.main.java下从官网复制粘贴5.3获取SqlSession对象执行SQL语句5.4释放资源 MyBatisDemo.java:
package com.itheima;import com.itheima.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;/*** Mybatis 快速入门代码*/
public class MyBatisDemo {public static void main(String[] args) throws IOException {// 1. 加载 MyBatis 的核心配置文件获取 SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);// 2.获取 SqlSession对象用它来执行sqlSqlSession sqlSession sqlSessionFactory.openSession();// 3.执行sqlListUser users sqlSession.selectList(test.selectAll);System.out.print(users);// 4.释放资源sqlSession.close();}
}03-解决SQL语句警告提示
解决SQL映射文件的警告提示
产生原因IDEA和数据库没有建立连接不识别表信息解决方式在IDEA中配置MySQL数据库连接 tips在IDEA敲sql语句 04-Mapper代理开发
目的
解决原生方式中的硬编码简化后期执行SQLIDEA写代码可以有代码补全功能很方便 1.定义接口
定义与SQL映射文件同名的Mapper接口并且将Mapper接口和SQL映射文件放置在同一目录下 在resources下创建包package发现只有目录directory?在resources下创建包时要使用斜杠/表示层次结构 因为路径更改了所以mybatis-config.xml文件中的路径也需要更改。从 UserMapper.xml改为om/itheima/mapper/UserMapper.xml。 2. 设置SQL映射文件的namespace属性为Mapper接口全限定名
把前面临时起的名称空间test改成com.itheima.mapper.UserMapper 3. 定义方法
在Mapper接口中定义方法方法名就是SQL映射文件中sql语句的id并保持参数类型和返回值类型一致
package com.itheima.mapper;import com.itheima.pojo.User;
import java.util.List;public interface UserMapper {ListUser selectAll();
}细节从select * from tb_user明确的知道返回的是集合所以用泛型List而不是User对象。很多个用集合单个就用独立的实体类对象 4. 编码
4.1 通过SqlSession的getMapper方法获取Mapper接口的代理对象
UserMapper userMapper sqlSession.getMapper(UserMapper.class);
4.2 调用对应方法完成sql的执行
ListUser users userMapper.selectAll(); MyBatisDemo2.java完整代码
package com.itheima;import com.itheima.mapper.UserMapper;
import com.itheima.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;/*** Mybatis 代理开发*/
public class MyBatisDemo2 {public static void main(String[] args) throws IOException {// 1. 加载 MyBatis 的核心配置文件获取 SqlSessionFactoryString resource mybatis-config.xml; // 注意路径InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);// 2.获取 SqlSession对象用它来执行sqlSqlSession sqlSession sqlSessionFactory.openSession();// 3.执行sql//ListUser users sqlSession.selectList(test.selectAll);//3.1 获取UserMapper接口的代理对象UserMapper userMapper sqlSession.getMapper(UserMapper.class);ListUser users userMapper.selectAll();System.out.println(users);// 4.释放资源sqlSession.close();}
}MyBatisDemo2.java运行结果展示 5. 映射文件的加载
细节如果Mapper接口名称和SQL映射文件名称相同并在同一目录下则可以使用包扫描的方式简化SQL映射文件的加载。
优点可以简化配置不需要在 MyBatis 配置文件中显式指定每个 Mapper XML 文件的位置。这可以减少配置文件的复杂性特别是对于拥有大量映射文件的项目。 到现在为止完整目录如下