2026/1/10 14:20:54
网站建设
项目流程
免费制作论坛网站模板免费下载,wordpress 调用自定义栏目,邵阳做网站哪个公司好,网站建设安全技术方面一、什么是 MyBatis#xff1f;MyBatis 是一款优秀的 Java 持久层框架#xff0c;它通过 XML 或注解 的方式#xff0c;将 SQL 语句与 Java 对象进行映射#xff0c;简化了 JDBC 操作#xff0c;同时又保留了 SQL 的灵活性。一句话总结#xff1a;MyBatis JDBC 封装 SQ…一、什么是 MyBatisMyBatis是一款优秀的Java 持久层框架它通过XML 或注解的方式将 SQL 语句与 Java 对象进行映射简化了 JDBC 操作同时又保留了 SQL 的灵活性。一句话总结MyBatis JDBC 封装 SQL 可控MyBatis 的优点SQL 可控、可优化比 Hibernate 更灵活与 Spring 集成方便学习成本低适合初学者支持动态 SQL功能强大二、MyBatis 的核心组成MyBatis 的核心主要包括以下几个部分组件作用SqlMapConfig.xml全局配置文件Mapper.xmlSQL 映射文件Mapper 接口定义数据库操作方法SqlSessionFactory创建 SqlSessionSqlSession执行 SQL 的核心对象三、MyBatis 开发环境搭建1. 引入依赖Mavendependencies !-- MyBatis -- dependency groupIdorg.mybatis/groupId artifactIdmybatis/artifactId version3.5.13/version /dependency !-- MySQL 驱动 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency /dependencies2. 创建 MyBatis 核心配置文件SqlMapConfig.xml?xml version1.0 encodingUTF-8 ? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration !-- 环境配置 -- environments defaultdevelopment environment iddevelopment transactionManager typeJDBC/ dataSource typePOOLED property namedriver valuecom.mysql.cj.jdbc.Driver/ property nameurl valuejdbc:mysql://localhost:3306/test/ property nameusername valueroot/ property namepassword value123456/ /dataSource /environment /environments !-- 映射文件 -- mappers mapper resourcemapper/UserMapper.xml/ /mappers /configuration四、创建实体类Entitypublic class User { private Integer id; private String username; private String password; // getter / setter }五、Mapper 映射文件1. Mapper.xml?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.qcby.mapper.UserMapper select idfindAll resultTypecom.qcby.entity.User select * from user /select select idfindById parameterTypeint resultTypecom.qcby.entity.User select * from user where id #{id} /select insert idinsertUser parameterTypecom.qcby.entity.User insert into user(username,password) values(#{username},#{password}) /insert /mapper2. Mapper 接口public interface UserMapper { ListUser findAll(); User findById(int id); void insertUser(User user); }六、MyBatis 执行流程示例public class MyBatisTest { public static void main(String[] args) throws Exception { // 1. 读取配置文件 InputStream in Resources.getResourceAsStream(SqlMapConfig.xml); // 2. 创建 SqlSessionFactory SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in); // 3. 获取 SqlSession SqlSession sqlSession factory.openSession(); // 4. 获取 Mapper 代理对象 UserMapper mapper sqlSession.getMapper(UserMapper.class); // 5. 执行方法 ListUser users mapper.findAll(); users.forEach(System.out::println); // 提交事务 sqlSession.commit(); // 关闭资源 sqlSession.close(); in.close(); } }七、MyBatis 参数传递方式1. 基本类型where id #{id}2. 对象参数where username #{username}3. 多参数ParamUser find(Param(name) String name, Param(pwd) String pwd);where username #{name} and password #{pwd}八、MyBatis 动态 SQL重点1. if 标签select idfindUser resultTypeUser select * from user where if testusername ! null and username #{username} /if if testpassword ! null and password #{password} /if /where /select2. foreach批量操作select idfindByIds resultTypeUser select * from user where id in foreach collectionlist itemid open( close) separator, #{id} /foreach /select九、MyBatis 常见问题总结1. 找不到 Mapper.xml确认路径是否在resources下resourcemapper/UserMapper.xml路径是否正确2. Getter 错误实体类属性名与 SQL 返回字段不一致缺少 getter / setter 方法3. 事务未提交增删改操作后记得sqlSession.commit()十、总结MyBatis 作为 Java 后端中使用最广泛的持久层框架之一具有以下特点SQL 灵活、易于优化配置清晰、扩展性强非常适合学习数据库与 Java 持久层原理建议学习路线JDBC → MyBatis → MyBatis Spring → MyBatis Plus