您好,登錄后才能下訂單哦!
在Spring Boot 2中使用MyBatis進行性能優(yōu)化是一個重要的任務。以下是一些常見的優(yōu)化策略:
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
@CacheNamespace
注解或XML配置開啟二級緩存,適用于多個SqlSession之間的共享緩存。@CacheNamespace
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(@Param("id") Long id);
}
SELECT *
,只選擇需要的列;使用索引優(yōu)化查詢。<if>
、<choose>
等標簽編寫動態(tài)SQL,減少不必要的SQL語句執(zhí)行。<select id="findUsers" parameterType="map" resultType="User">
SELECT * FROM users
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
<association>
和<collection>
標簽進行關聯查詢,減少N+1查詢。<resultMap id="userResultMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<collection property="roles" ofType="Role">
<id property="id" column="role_id"/>
<result property="name" column="role_name"/>
</collection>
</resultMap>
@ManyToOne
、@OneToMany
等注解時,設置fetch = FetchType.LAZY
,減少不必要的數據加載。@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
private List<Role> roles;
}
public Page<User> findUsers(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
return userMapper.selectAllUsers();
}
@Async
public void sendEmail(String content) {
// 發(fā)送郵件的邏輯
}
通過以上策略,可以有效地提高Spring Boot 2中MyBatis的性能。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。