1.MyBatista的各个文件配置:
1. mybatis-config.xml:这是MyBatis的主配置文件,用于配置全局属性和设置。在该文件中可以配置数据库连接信息、类型处理器、插件、映射器等。
2. Mapper.xml:这是MyBatis的映射文件,用于定义SQL语句和映射关系。在该文件中可以定义SQL语句、参数映射、结果映射等。
3. Mapper接口:这是MyBatis的Mapper接口,用于定义数据库操作的方法。在该接口中可以定义查询、插入、更新、删除等数据库操作方法。
4. SqlMapConfig.xml:这是MyBatis的配置文件,用于配置MyBatis的相关属性。在该文件中可以配置数据库连接信息、类型处理器、插件等。
5. SqlMap.xml:这是MyBatis的映射文件,用于定义SQL语句和映射关系。在该文件中可以定义SQL语句、参数映射、结果映射等。
6. SqlMapClient.xml:这是MyBatis的配置文件,用于配置MyBatis的相关属性。在该文件中可以配置数据库连接信息、类型处理器、插件等。
7. SqlMapClientBuilder.xml:这是MyBatis的配置文件,用于配置MyBatis的相关属性。在该文件中可以配置数据库连接信息、类型处理器、插件等。
这些文件的配置可以根据具体的项目需求进行调整和修改,以满足业务需求。
2.Mapper.xml文件:
- Mapper.xml文件:这是最常用的编写SQL语句的地方。在Mapper.xml文件中,可以使用<select>、<insert>、<update>、<delete>等标签来编写SQL语句。例如:
<!-- 查询用户信息 -->
<select id="getUserById" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 插入用户信息 -->
<insert id="insertUser" parameterType="User">
INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})
</insert>
<!-- 更新用户信息 -->
<update id="updateUser" parameterType="User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<!-- 删除用户信息 -->
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
2.1 ResultType
resultType属性用于指定SQL查询结果的映射类型。
resultType属性可以指定一个Java类的全限定名,该类将作为查询结果的映射类型。MyBatis将根据查询结果自动将每一行的数据映射到该Java类的对象中。
例如,假设有一个User类:
public class User {
private int id;
private String name;
private int age;
// getter和setter方法 }
在Mapper.xml中可以这样使用resultType属性:
<select id="getUserById" resultType="com.example.User">
SELECT * FROM user WHERE id = #{id}
</select>
这样,当执行getUserById查询时,MyBatis会自动将查询结果的每一行数据映射到User对象中,并返回一个User对象。
需要注意的是,resultType属性只适用于简单的映射关系,如果查询结果涉及到复杂的关联关系,或者需要进行一些额外的处理,可以考虑使用<resultMap>标签来定义更复杂的结果映射关系。
#{}中的数据必须是实体类和数据库中的某个列名的名称一样,否则查询不成功
这个里面还可以放数据类型,放的数据类型就是你查出来的数据的类型
2.2 parameterType
在MyBatis的Mapper.xml文件中,parameterType属性用于指定SQL语句中的参数类型。
parameterType属性可以指定一个Java类的全限定名,该类将作为SQL语句的参数类型。MyBatis会根据参数类型来自动将Java对象的属性值映射到SQL语句中的参数位置。
例如,假设有一个User类:
public class User { private int id; private String name; private int age; // getter和setter方法 }
在Mapper.xml中可以这样使用parameterType属性:
<insert id="insertUser" parameterType="com.example.User"> INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age}) </insert>
这样,当执行insertUser插入操作时,MyBatis会自动将User对象的id、name和age属性值映射到SQL语句中的参数位置。
需要注意的是,如果SQL语句中有多个参数,可以使用Map或者@Param注解来指定参数的名称。例如:
<update id="updateUser" parameterType="java.util.Map"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update>
void updateUser(@Param("id") int id, @Param("name") String name, @Param("age") int age);
在这个例子中,SQL语句中的参数名与Map中的键名或@Param注解中指定的参数名相匹配。
需要注意的是,parameterType属性只适用于简单的参数类型,如果参数涉及到复杂的关联关系,可以考虑使用<parameterMap>标签来定义更复杂的参数映射关系。
3.条件查询
下图是Mapper.xml文件中的SQL语句,include是我封装的sql字段;
下图是接口中定义的方法;
下图是测试类的代码:
4.MyBatis缓存
MyBatis的缓存是一种提高性能的机制,它可以缓存查询结果,减少对数据库的访问次数。MyBatis的缓存分为两级:一级缓存和二级缓存。
4.1:一级缓存
一级缓存是指在同一个SqlSession中执行相同的查询语句时,如果查询的参数相同,那么MyBatis会直接从缓存中获取结果,而不会再次发送SQL语句到数据库。一级缓存是默认启用的,可以通过配置文件进行关闭。
4.2:二级缓存
二级缓存是指在多个SqlSession中执行相同的查询语句时,如果查询的参数相同,那么MyBatis会从缓存中获取结果,而不会再次发送SQL语句到数据库。二级缓存是需要手动配置的,需要在mapper.xml文件中添加<cache>标签,并设置相应的属性。