一、實現懶加載
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/zh-hk/n/302857.html