一、实现懒加载
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注解进行开发时,需要注意以下几点:
- 使用@Result注释时,必须确保结果列名与属性名一致,否则结果将无法映射。
- 使用@One和@Many注释时,必须指定javaType属性和select属性,否则将无法自动构建对象。
- 在使用联表查询时,必须使用别名,以避免结果列名冲突。
八、Mybatis注解开发报告心得
使用Mybatis注解进行开发,可以更加自由地进行开发。使用注解可以减少Mapper接口和XML文件的编写量,同时也能够简化开发流程,在实际开发中具有一定的优势。
九、Mybatis注解开发乱码
在进行Mybatis注解开发时,可能会遇到中文乱码的问题。这是由于Mybatis默认使用的是UTF-8编码,而数据库中的编码可能与之不兼容所造成。
在解决乱码问题时,可以使用以下两种方法:
- 设置JDBC URL参数,指定编码。例如:jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
- 在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