Mybatis相关知识点
发布人:shili8
发布时间:2025-02-12 20:41
阅读次数:0
**MyBatis 相关知识点**
###1. MyBatis 的基本概念MyBatis 是一个开源的 Java 框架,用于操作数据库。它提供了一个简单、易用的 API,让开发者可以轻松地与数据库进行交互。
####1.1 MyBatis 的主要功能* **SQL映射**:MyBatis 提供了 SQL 映射功能,使得开发者可以将 SQL语句与 Java 对象进行映射。
* **结果集的处理**:MyBatis 可以自动地将数据库查询结果转换为 Java 对象。
* **缓存机制**:MyBatis 提供了一个缓存机制,用于减少数据库访问次数。
###2. MyBatis 的配置####2.1 mybatis-config.xml 文件mybatis-config.xml 是 MyBatis 的核心配置文件。它定义了 MyBatis 的全局配置项,如环境、类型别名、SQL 映射等。
xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//iBATIS//DTD XML Configuration3.0//EN" " /><configuration> <!-- 配置环境 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 配置类型别名 --> <typeAliases> <package name="com.example.mybatis.model"/> </typeAliases> <!-- 配置 SQL 映射 --> <mappers> <mapper resource="com/example/mybatis/mapper/UserMapper.xml"/> </mappers> </configuration>
####2.2 mybatis.properties 文件mybatis.properties 是 MyBatis 的配置文件,可以用于覆盖 mybatis-config.xml 中的配置项。
propertiesjdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&serverTimezone=UTCjdbc.username=rootjdbc.password=password
###3. MyBatis 的 SQL 映射####3.1 UserMapper.xml 文件UserMapper.xml 是一个 SQL 映射文件,定义了与 User 表的 CRUD 操作。
xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//iBATIS//DTD XML Mapper3.0//EN" " /><mapper namespace="com.example.mybatis.mapper.UserMapper"> <!-- 查询用户 --> <select id="selectUser" resultType="com.example.mybatis.model.User"> SELECT * FROM user WHERE id = #{id} </select> <!-- 插入用户 --> <insert id="insertUser" useGeneratedKeys="true" keyProperty="id"> INSERT INTO user (name, age) VALUES (#{name}, #{age}) </insert> <!-- 更新用户 --> <update id="updateUser"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <!-- 删除用户 --> <delete id="deleteUser"> DELETE FROM user WHERE id = #{id} </delete> </mapper>
####3.2 UserMapper.java 文件UserMapper.java 是一个 Java 接口,定义了与 User 表的 CRUD 操作。
javapublic interface UserMapper { ListselectUser(int id); void insertUser(User user); void updateUser(User user); void deleteUser(int id); }
###4. MyBatis 的缓存机制####4.1 一级缓存一级缓存是 MyBatis 中的一个缓存机制,用于减少数据库访问次数。
javapublic class UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") public ListselectUser(int id); }
####4.2 二级缓存二级缓存是 MyBatis 中的一个缓存机制,用于减少数据库访问次数。
javapublic class UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") public ListselectUser(int id); }
###5. MyBatis 的事务管理####5.1 JDBC 事务管理JDBC 事务管理是 MyBatis 中的一个事务管理机制,用于保证数据库操作的原子性。
javapublic class UserMapper { @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") public void insertUser(User user); }
####5.2 JPA 事务管理JPA 事务管理是 MyBatis 中的一个事务管理机制,用于保证数据库操作的原子性。
javapublic class UserMapper { @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") public void insertUser(User user); }
###6. MyBatis 的日志管理####6.1 SLF4J 日志管理SLF4J 日志管理是 MyBatis 中的一个日志管理机制,用于记录数据库操作的日志。
javapublic class UserMapper { @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") public void insertUser(User user); }
####6.2 Log4j 日志管理Log4j 日志管理是 MyBatis 中的一个日志管理机制,用于记录数据库操作的日志。
javapublic class UserMapper { @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") public void insertUser(User user); }
###7. MyBatis 的安全管理####7.1 SQL 注入防护SQL 注入防护是 MyBatis 中的一个安全机制,用于防止 SQL 注入攻击。
javapublic class UserMapper { @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") public void insertUser(User user); }
####7.2 CSRF 防护CSRF 防护是 MyBatis 中的一个安全机制,用于防止跨站请求伪造攻击。
javapublic class UserMapper { @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") public void insertUser(User user); }
###8. MyBatis 的性能优化####8.1 SQL优化SQL优化是 MyBatis 中的一个性能优化机制,用于提高数据库操作的效率。
javapublic class UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") public ListselectUser(int id); }
####8.2 缓存优化缓存优化是 MyBatis 中的一个性能优化机制,用于减少数据库访问次数。
javapublic class UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") public ListselectUser(int id); }
###9. MyBatis 的扩展####9.1 扩展 SQL 映射扩展 SQL 映射是 MyBatis 中的一个扩展机制,用于增加数据库操作的功能。
javapublic class UserMapper { @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") public void insertUser(User user); }
####9.2 扩展缓存扩展缓存是 MyBatis 中的一个扩展机制,用于增加数据库操作的性能。
javapublic class UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") public ListselectUser(int id); }
###10. MyBatis 的最佳实践####10.1 使用 SQL 映射使用 SQL 映射是 MyBatis 中的一个最佳实践,用于提高数据库操作的效率。
javapublic class UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") public ListselectUser(int id); }
####10.2 使用缓存使用缓存是 MyBatis 中的一个最佳实践,用于减少数据库访问次数。
javapublic class UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") public ListselectUser(int id); }
###11. MyBatis 的常见问题####11.1 Q: 我们可以使用 MyBatis 来操作多个数据库吗?
A: 是的,我们可以使用 MyBatis 来操作多个数据库。
javapublic class UserMapper { @Select("SELECT