Mybatis注解开发

一、实现懒加载

Mybatis可以使用注解来实现懒加载。当需要一个对象时,会根据需要自动查询。使用@ManyToOne,@OneToOne,@OneToMany或@ManyToMany注释实体之间的关系。
这些注释也可以通过使用@LazyCollection(LazyCollectionOption)控制懒加载的方式。

下面的代码是一个示例,演示了如何使用@ManyToOne注解:

    
public class Order {
    private Integer id;
    private String orderNo;
    private Customer customer;//订单对应的客户
    
    //省略getter、setter
}

public class Customer {
    private Integer id;
    private String username;
    private String password;
    
    //省略getter、setter
}

//OrderMapper.xml
<resultMap id="orderMap" type="Order">
    <id column="id" property="id"/>
    <result column="orderNo" property="orderNo"/>
    <association property="customer" javaType="Customer" select="com.xxx.mapper.CustomerMapper.getCustomerById" column="customerId"/>
</resultMap>

//OrderMapper.java
public interface OrderMapper {
    @Select("select * from order where id = #{id}")
    @Results({
        @Result(id = true, column = "id", property = "id"),
        @Result(column = "orderNo", property = "orderNo"),
        @Result(column = "customerId", property = "customer", javaType = Customer.class, one = @One(select = "com.xxx.mapper.CustomerMapper.getCustomerById", fetchType = FetchType.LAZY))
    })
    Order getOrderById(Integer id);
}
    

二、Mybatis注解select

Mybatis中可以使用@Select注解进行查询操作。可以使用@Result注释配置结果映射,使用@Results注释配置映射列表。

下面的代码是一个示例,演示如何使用@Select注解:

    
//UserMapper.java
public interface UserMapper {
    @Select("select * from user where id = #{id}")
    @Results({
        @Result(id = true, column = "id", property = "id"),
        @Result(column = "username", property = "username"),
        @Result(column = "password", property = "password")
    })
    User getUserById(Integer id);
}
    

三、Mybatis注解开发需要mapper注解吗

当使用Mybatis注解进行开发时,不需要使用@Mapper注解。Mybatis会自动扫描所有的Mapper接口和注解,并将其注册到容器中。

四、Mybatis注解开发有没有多对多

Mybatis注解开发支持多对多关系。使用@ManyToMany或@JoinTable注释实现多对多关系映射。同时,使用@OneToMany和@ManyToOne注释实现一对多和多对一关系映射。

下面的代码是一个示例,演示如何使用@ManyToMany注解:

    
public class Course {
    private Integer id;
    private String name;
    private List<Student> students;//课程对应的学生
    
    //省略getter、setter
}

public class Student {
    private Integer id;
    private String name;
    private List<Course> courses;//学生选修的课程
    
    //省略getter、setter
}

//CourseMapper.xml
<resultMap id="courseMap" type="Course">
    <id column="id" property="id"/>
    <result column="name" property="name"/>
    <collection property="students" javaType="List" column="id" ofType="Student" select="com.xxx.mapper.StudentMapper.getStudentsByCourseId"/>
</resultMap>

//CourseMapper.java
public interface CourseMapper {
    @Select("select * from course where id = #{id}")
    @Results({
        @Result(id = true, column = "id", property = "id"),
        @Result(column = "name", property = "name"),
        @Result(column = "id", property = "students", javaType = List.class, many = @Many(select = "com.xxx.mapper.StudentMapper.getStudentsByCourseId"))
    })
    Course getCourseById(Integer id);
}
    

五、Mybatis注解开发联表

Mybatis注解开发支持联表查询。使用@Select注释组合多个查询语句,使用@Results注释配置结果映射。

下面的代码是一个示例,演示如何使用联表查询:

    
//OrderMapper.java
public interface OrderMapper {
    @Select("select o.id as id, o.orderNo as orderNo, c.id as customerId, c.username as customerUsername from `order` o left join customer c on o.customerId = c.id where o.id = #{id}")
    @Results({
        @Result(id = true, column = "id", property = "id"),
        @Result(column = "orderNo", property = "orderNo"),
        @Result(column = "customerId", property = "customer.id"),
        @Result(column = "customerUsername", property = "customer.username")
    })
    Order getOrderById(Integer id);
}
    

六、Mybatis注解开发update

Mybatis注解开发支持更新操作。使用@Update注释进行更新操作。使用#{}包含属性名,使用{}不进行处理,直接与SQL语句拼接,比如可以使用时间戳函数。

下面的代码是一个示例,演示如何使用@Update注解:

    
//UserMapper.java
public interface UserMapper {
    @Update("update user set username = #{username}, password = #{password} where id = #{id}")
    void updateUser(User user);
}
    

七、Mybatis注解开发实验心得

在使用Mybatis注解进行开发时,需要了解Mybatis注解的语法和使用方式。同时,需要了解Mybatis的映射机制和实现方式,以便正确地使用注解进行映射。

在使用Mybatis注解进行开发时,需要注意以下几点:

  1. 使用@Result注释时,必须确保结果列名与属性名一致,否则结果将无法映射。
  2. 使用@One和@Many注释时,必须指定javaType属性和select属性,否则将无法自动构建对象。
  3. 在使用联表查询时,必须使用别名,以避免结果列名冲突。

八、Mybatis注解开发报告心得

使用Mybatis注解进行开发,可以更加自由地进行开发。使用注解可以减少Mapper接口和XML文件的编写量,同时也能够简化开发流程,在实际开发中具有一定的优势。

九、Mybatis注解开发乱码

在进行Mybatis注解开发时,可能会遇到中文乱码的问题。这是由于Mybatis默认使用的是UTF-8编码,而数据库中的编码可能与之不兼容所造成。

在解决乱码问题时,可以使用以下两种方法:

  1. 设置JDBC URL参数,指定编码。例如:jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
  2. 在Mybatis的配置文件中,添加以下配置项:
            <configuration>
                <!-- 其他配置项 -->
                <properties>
                    <property name="autoMappingBehavior" value="FULL"/>
                    <property name="jdbcTypeForNull" value="NULL"/>
                    <!-- 添加以下配置项 -->
                    <property name="useUnicode" value="true"/>
                    <property name="characterEncoding" value="UTF-8"/>
                </properties>
            </configuration>
        

十、Mybatis注解开发模糊查询

在进行Mybatis注解开发时,可能需要进行模糊查询。可以通过在select语句中使用like来实现模糊查询,使用%表示通配符。

下面的代码是一个示例,演示如何进行模糊查询:

    
//UserMapper.java
public interface UserMapper {
    @Select("select * from user where username like '%${username}%'")
    @Results({
        @Result(id = true, column = "id", property = "id"),
        @Result(column = "username", property = "username"),
        @Result(column = "password", property = "password")
    })
    List<User> findUsersByUsernameLike(String username);
}
    

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/302857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-31 11:48
下一篇 2024-12-31 11:48

相关推荐

  • Hibernate注解联合主键 如何使用

    解答:Hibernate的注解方式可以用来定义联合主键,使用@Embeddable和@EmbeddedId注解。 一、@Embeddable和@EmbeddedId注解 在Hibe…

    编程 2025-04-29
  • 理解Mybatis中的SQL Limit用法

    Mybatis是一种非常流行的ORM框架,提供了SQL映射配置文件,可以使用类似于传统SQL语言的方式编写SQL语句。其中,SQL的Limit语法是一个非常重要的知识点,能够实现分…

    编程 2025-04-29
  • Mybatis-plus条件构造器

    一、可重用性 Mybatis-plus作为Mybatis的扩展工具,提供了丰富的功能让开发更加高效便捷。其中之一的条件构造器可以帮助我们构建各种查询条件,而且支持链式调用,非常适合…

    编程 2025-04-25
  • 从多个方面详解RequestMapping注解

    一、RequestMapping注解的基本用法 RequestMapping注解用于将HTTP请求映射到方法上。下面是一个示例: @Controller public class …

    编程 2025-04-25
  • Mybatis中update if详解

    一、if标签的基本用法 在Mybatis中使用update语句更新数据库表中的一条或多条数据,我们通常通过if标签来动态生成update语句。if标签的使用方法如下: <up…

    编程 2025-04-25
  • Mybatis批量插入操作

    一、基本概念 Mybatis是一种基于java的持久层框架,旨在帮助开发人员简化数据库操作。该框架提供了多种方式来执行数据库操作,其中包括批量插入。批量插入是一种在单个事务中提交多…

    编程 2025-04-25
  • MyBatis如何防止SQL注入

    MyBatis是一款开源的持久层框架,它可以简化Java应用程序中的数据持久化过程,并提供了许多有用的功能。然而,安全问题一直是Web应用程序的一大挑战,其中最严重的问题之一是SQ…

    编程 2025-04-25
  • Mybatis-plus 日志详解

    一、日志框架概述 1、什么是日志框架 日志框架是一个用于管理日志的工具,使用日志框架可以帮助开发人员记录程序运行时产生的信息、警告和错误消息。常用的日志框架有log4j和logba…

    编程 2025-04-24
  • Mybatis Plus分页失效问题及解决方案

    一、分页失效的原因 Mybatis Plus是一款优秀的ORM框架,使用简单方便。但是,在使用它进行分页时,有时会出现分页失效的问题,原因可能有以下几个方面: 1、Mybatis …

    编程 2025-04-24
  • MybatisPlus联合主键注解

    一、@TableId注解的用途 MybatisPlus是基于Mybatis的增强工具,提供了很多便捷的注解和方法。@TableId注解是其中的一个。它的作用是标注实体类的主键字段,…

    编程 2025-04-24

发表回复

登录后才能评论