https://blog.csdn.net/m0_38068812/article/details/86566929
spring boot(8)-mybatis三種動態sql 或者 這個
1. 代碼實現字段的映射
public interface IUserMapper { @Select({"SELECT * from user" } ) //@ResultMap("basicMap") // 此處可以直接使用mapper.xml中 @Results({ @Result(column = "d_id",property = "id"), @Result(column = "d_username",property = "userName"), @Result(column = "d_password",property = "password"), @Result(column = "d_age",property = "age"), @Result(column = "d_name",property = "name") }) List<User> getList1(); }
2. 動態SQL語句
@Mapper public interface IUserMapper { //使用UserProvider類的findUserById方法來生成sql @SelectProvider(type = UserProvider.class, method = "findUserById") public List<User> findUserById(User user); class UserProvider { public String findUserById(User user) { String sql = "SELECT * FROM user"; if(user.getId()!=null){ sql += " where id = #{id}"; } return sql; } }
3. 結構化SQL
public String findUserById(User user) { return new SQL(){{ SELECT("id,name"); SELECT("other"); FROM("user"); if(user.getId()!=null){ WHERE("id = #{id}"); } if(user.getName()!=null){ WHERE("name = #{name}"); } }}.toString(); //從這個toString可以看出,其內部使用高效的StringBuilder實現SQL拼接
}
mybatis語句構造器
https://mybatis.org/mybatis-3/zh/statement-builders.html
mybatis plus 的條件構造器