一 UserDao
package org.fkit.hrm.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.fkit.hrm.dao.provider.UserDynaSqlProvider;
import org.fkit.hrm.domain.User;
import static org.fkit.hrm.util.common.HrmConstants.USERTABLE;
public interface UserDao {
// 根据登录名和密码查询员工
@Select("select * from "+USERTABLE+" where loginname = #{loginname} and password = #{password}")
User selectByLoginnameAndPassword(
@Param("loginname") String loginname,
@Param("password") String password);
// 根据id查询用户
@Select("select * from "+USERTABLE+" where ID = #{id}")
User selectById(Integer id);
// 根据id删除用户
@Delete(" delete from "+USERTABLE+" where id = #{id} ")
void deleteById(Integer id);
// 动态修改用户
@SelectProvider(type=UserDynaSqlProvider.class,method="updateUser")
void update(User user);
// 动态查询
@SelectProvider(type=UserDynaSqlProvider.class,method="selectWhitParam")
List<User> selectByPage(Map<String, Object> params);
// 根据参数查询用户总数
@SelectProvider(type=UserDynaSqlProvider.class,method="count")
Integer count(Map<String, Object> params);
// 动态插入用户
@SelectProvider(type=UserDynaSqlProvider.class,method="insertUser")
void save(User user);
}
二 UserDynaSqlProvider
package org.fkit.hrm.dao.provider;
import java.util.Map;
import org.apache.ibatis.jdbc.SQL;
import org.fkit.hrm.domain.User;
import static org.fkit.hrm.util.common.HrmConstants.USERTABLE;
public class UserDynaSqlProvider {
// 分页动态查询
public String selectWhitParam(Map<String, Object> params){
String sql = new SQL(){
{
SELECT("*");
FROM(USERTABLE);
if(params.get("user") != null){
User user = (User)params.get("user");
if(user.getUsername() != null && !user.getUsername().equals("")){
WHERE(" username LIKE CONCAT ('%',#{user.username},'%') ");
}
if(user.getUserstatus() != null && !user.getUserstatus().equals("")){
WHERE(" userstatus LIKE CONCAT ('%',#{user.userstatus},'%') ");
}
}
}
}.toString();
if(params.get("pageModel") != null){
sql += " limit #{pageModel.firstLimitParam} , #{pageModel.pageSize} ";
}
return sql;
}
// 动态查询总数量
public String count(Map<String, Object> params){
return new SQL(){
{
SELECT("count(*)");
FROM(USERTABLE);
if(params.get("user") != null){
User user = (User)params.get("user");
if(user.getUsername() != null && !user.getUsername().equals("")){
WHERE(" username LIKE CONCAT ('%',#{user.username},'%') ");
}
if(user.getUserstatus() != null && !user.getUserstatus().equals("")){
WHERE(" userstatus LIKE CONCAT ('%',#{user.userstatus},'%') ");
}
}
}
}.toString();
}
// 动态插入
public String insertUser(User user){
return new SQL(){
{
INSERT_INTO(USERTABLE);
if(user.getUsername() != null && !user.getUsername().equals("")){
VALUES("username", "#{username}");
}
if(user.getUserstatus() != null && !user.getUserstatus().equals("")){
VALUES("userstatus", "#{userstatus}");
}
if(user.getLoginname() != null && !user.getLoginname().equals("")){
VALUES("loginname", "#{loginname}");
}
if(user.getPassword() != null && !user.getPassword().equals("")){
VALUES("password", "#{password}");
}
}
}.toString();
}
// 动态更新
public String updateUser(User user){
return new SQL(){
{
UPDATE(USERTABLE);
if(user.getUsername() != null){
SET(" username = #{username} ");
}
if(user.getLoginname() != null){
SET(" loginname = #{loginname} ");
}
if(user.getPassword()!= null){
SET(" password = #{password} ");
}
if(user.getUserstatus()!= null){
SET(" userstatus = #{userstatus} ");
}
if(user.getCreateDate()!= null){
SET(" create_date = #{createDate} ");
}
WHERE(" id = #{id} ");
}
}.toString();
}
}