学习MyBatis day2

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文件:

  1. 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>标签,并设置相应的属性。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值