springboot 整合myabtis sql預警xml 配置文件實現請見spring-boot整合myabtis
本節中將實現註解完成sql
首先需要了解幾個註解@Select ,@Update ,@Delete,@Insert
以上節獲取role 爲例
package com.zyc.springboot.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import com.zyc.springboot.entity.Role;
@Mapper
public interface RoleDao {
@Select(value="select id ,role_name as roleName from role where id=#{id}")
public List<Role> getRole(String id);
}
@Upate,@Delete,@Insert同理,上方select語句得到的結果要和Role類中的屬性保持一致可使用@Results註解
package com.zyc.springboot.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import com.zyc.springboot.entity.Role;
@Mapper
public interface RoleDao {
@Select(value="select id ,role_name from role where id=#{id}")
@Results({@Result(property="id",column="id"),
@Result(property="roleName",column="role_name")
})
public List<Role> getRole(String id);
}
上面這種方法拼寫複雜的sql不太方便可以使用@SelectProvider,@UpdateProvider,@DeleteProvider,@InsertProvider
使用@SelectProvider註解如下
package com.zyc.springboot.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.SelectProvider;
import com.zyc.springboot.entity.RoleProvider;
import com.zyc.springboot.entity.Role;
@Mapper
public interface RoleDao {
@SelectProvider(type=RoleProvider.class,method="getRole")
@Results({@Result(property="id",column="id"),
@Result(property="roleName",column="role_name")
})
public List<Role> getRole(@Param("id")String id,@Param("name")String name);
}
RoleProvider實現類如下,多個參數要使用Map接收,並且在dao層使用@Param註解與之對應
package com.zyc.springboot.entity;
import java.util.Map;
import org.apache.ibatis.jdbc.SQL;
import com.zyc.springboot.util.StringUtils;
/**
* 拼接sql類實現
* @author Administrator
*
*/
public class RoleProvider {
public String getRole(Map<String,Object> param) {
SQL sql = new SQL().SELECT("*").FROM("Role");
String id= param.get("id").toString();
if (id!=null&&!id.trim().equals("")) {
sql.WHERE("id = #{id}");
}
String roleName= param.get("name").toString();
if (roleName!= null&&!roleName.trim().equals("")) {
sql.WHERE(" role_name LIKE #{roleName}");
}
System.out.println(sql.toString());
return sql.toString();
}
}
@UpdateProvider,@DeleteProvider,@InsertProvider同理