Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple ORM - 简单小巧强大的orm框架

GitHub last commit GitHub repo size GitHub issues GitHub Repo stars

cover

历史

  • 2019年提交创建了此项目

更适合的人群或者场景

  • 希望项目更加轻量级,快速实现对mysql增删改查操作的
  • 希望学习java jdbc操作和具体封装实现的初学者,此项目更加清晰和容易理解

初始化

@Slf4j
public class BaseDAO {


    public static DaoHelper daoHelper = null;

    static {
        try {
            daoHelper = DaoHelper.createIntrance(path() + "/druid.properties");
        } catch (Exception e) {
            log.error("初始化数据库异常", e);
        }
    }

    public static String path() {
        String path = BaseDAO.class.getResource("/").getPath();
        if (SystemUtils.IS_OS_WINDOWS) {
            return path + "/test";
        }
        return path + "/online";
    }
}

创建DB服务

@Table(name = "tbl_user")
public class User {

    @Id
    private Long id;
    
    // 如果java pojo实体字段和数据表字段不一致 这里需要增加一个注解标识
    @Column(name = "user_name")
    private String userName;

    private String phone;

    private String email;
    
    // get set 省略.....
}
public interface UserService {

    /**
     * 根据userName获取用户信息
     *
     * @param userName
     * @return
     */
    User getUserByUserName(String userName);
 }
@Slf4j
@Service
public class UserServiceImpl implements UserService {


    @Override
    public User getUserByUserName(String userName) {
        try {
            Assert.checkArgument(StringUtils.isBlank(userName), "用户名不能为空");
            DbQuery dbQuery = new DbQuery();
            dbQuery.column("user_name").equal(userName);
            User user = BaseDAO.daoHelper.getOneByQuery(User.class, dbQuery, "*", null);
            return user;
        } catch (Exception e) {
            log.error("根据用户名获取用户信息异常", e);
        }
        return null;
    }
 }

查询的重点就是构建查询条件 DbQuery

 DbQuery dbQuery = new DbQuery();
            dbQuery.column("user_name").equal(userName);
            User user = BaseDAO.daoHelper.getOneByQuery(User.class, dbQuery, "*", null);

快速的SQL编写查询

只是展示查询语法,跟商品User定义可能无关

  • case1
 public List<Role> getRolesByUserId(Long userId) {
        try {
            Assert.checkArgument(CheckParamUtils.isNullLong.test(userId), "用户id不能为空");
            String sql = " SELECT r.* FROM tbl_p_role r LEFT JOIN tbl_p_user_role ur on ur.role_id = r.id WHERE  r.`status` = 0 AND ur.user_id = ? ;";
            return BaseDAO.daoHelper.selectBySQL(Role.class, sql, userId);
        } catch (Exception e) {
            log.error("获取用户角色信息列表异常", e);
        }
        return null;
}
  • case2
 public List<Resource> getAllPermissionResource(Long userId) {
        try {
            Assert.checkArgument(CheckParamUtils.isNullLong.test(userId), "用户信息不能为空");
            StringBuilder sql = new StringBuilder();
            sql.append(" SELECT r.* FROM tbl_p_user_role ur  ");
            sql.append(" LEFT JOIN tbl_p_permission p ON p.role_id = ur.role_id ");
            sql.append(" LEFT JOIN tbl_p_resource r ON r.id = p.resource_id ");
            sql.append(" WHERE  p.`status` = 0 AND r.`status` = 0  AND ur.user_id = ?  ");
            return BaseDAO.daoHelper.selectBySQL(Resource.class, sql.toString(), userId);
        } catch (Exception e) {
            log.error("获取所有权限信息异常", e);
        }
        return null;
}

About

一个简单的orm框架,A simple ORM framework

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages