{"id":19388554,"url":"https://github.com/openingo/mybatis-x","last_synced_at":"2025-06-24T22:35:25.556Z","repository":{"id":57716241,"uuid":"273131562","full_name":"openingo/mybatis-x","owner":"openingo","description":"MyBatis(Plus) Extensions","archived":false,"fork":false,"pushed_at":"2021-07-29T04:01:54.000Z","size":48,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-24T19:58:57.653Z","etag":null,"topics":["mybatis","mybatis-plus","mybatis-plus-x","mybatis-x"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openingo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-18T03:19:53.000Z","updated_at":"2022-06-18T16:05:38.000Z","dependencies_parsed_at":"2022-08-25T09:21:24.375Z","dependency_job_id":null,"html_url":"https://github.com/openingo/mybatis-x","commit_stats":null,"previous_names":["openingo/mybatis-plus-ext"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/openingo/mybatis-x","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openingo%2Fmybatis-x","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openingo%2Fmybatis-x/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openingo%2Fmybatis-x/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openingo%2Fmybatis-x/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openingo","download_url":"https://codeload.github.com/openingo/mybatis-x/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openingo%2Fmybatis-x/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261768166,"owners_count":23206949,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mybatis","mybatis-plus","mybatis-plus-x","mybatis-x"],"created_at":"2024-11-10T10:12:58.794Z","updated_at":"2025-06-24T22:35:25.535Z","avatar_url":"https://github.com/openingo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"### MyBatis(Plus) Extensions\n\n![maven](https://img.shields.io/maven-central/v/org.openingo.boot/mybatis-x.svg)\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.openingo.boot\u003c/groupId\u003e\n  \u003cartifactId\u003emybatis-x\u003c/artifactId\u003e\n  \u003cversion\u003enew_version\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n#### features\n\n- ModelX: 针对MyBatis-Plus的Model扩展\n\n#### 使用方式\n\n- generator配置\n\n```java\n// 策略配置\nStrategyConfig strategy = new StrategyConfig();\nstrategy.setNaming(NamingStrategy.underline_to_camel);\nstrategy.setColumnNaming(NamingStrategy.underline_to_camel);\nstrategy.setSuperEntityClass(ModelX.class); // ModelX在这里\n```\n\n#### 示例\n\n\u003e 以UserDO举例\n\u003e\n\u003e ```java\n\u003e @TableName(\"t_user\")\n\u003e public UserDO extends ModelX\u003cUserDO\u003e {\n\u003e   private static final long serialVersionUID=1L;\n\u003e   \n\u003e   @TableId(value = \"user_id\", type = IdType.AUTO)\n\u003e   private Integer userId;\n\u003e   \n\u003e   private String userName;\n\u003e   \n\u003e   private Integer sex;\n\u003e }\n\u003e ```\n\u003e\n\u003e \n\n- doQuery\n\n  ```java\n  // sql: select user_id, user_name from t_user where user_name = 'qicz';\n  UserDO.dao(UserDO.class).eq(UserDO::getUserName, \"qicz\").eq(UserDO::getSex: 1).select(UserDO::getUserId, UserDO::getUserName).doQuery();\n  ```\n\n  \u003e select输出的位置不限\n\n- doQueryLimitOne\n\n  ```java\n  // sql: select user_id, user_name from t_user where user_name = 'qicz' limit 1;\n  UserDO.dao(UserDO.class).eq(UserDO::getUserName, \"qicz\").eq(UserDO::getSex: 1).select(UserDO::getUserId, UserDO::getUserName).doQueryLimitOne();\n  ```\n\n  \u003e 【暂仅支持MySQL】会自动在queryWrapper拼接`LIMIT 1`，不影响添加`LIMIT 1`之后的其他操作(MyBatis-Plus只能进行一次last操作的问题解决)。\n                                                                                                                                                                                                                                                                         \n- doQueryOne\n\n  ```java\n  // sql: select user_id, user_name from t_user where user_name = 'qicz';\n  UserDO.dao(UserDO.class).eq(UserDO::getUserName, \"qicz\").eq(UserDO::getSex: 1).select(UserDO::getUserId, UserDO::getUserName).doQueryOne();\n  ```\n\n  \u003e 当查询结果大于1条时，会有异常。\n\n- doUpdate\n\n  ```java\n  // sql: update t_user set user_name = 'qicz-new-name' where user_name = 'qicz' and sex = 1;\n  UserDO.dao(UserDO.class).eq(UserDO::getUserName, \"qicz\").eq(UserDO::getSex: 1).set(UserDO::getUserName, \"qicz-new-name\").doUpdate();\n  ```\n\n- doDelete\n\n  ```java\n  // sql: delete from t_user where user_name = 'qicz' and sex = 1;\n  UserDO.dao(UserDO.class).eq(UserDO::getUserName, \"qicz\").eq(UserDO::getSex: 1).doDelete();\n  ```\n\n- 先doQuery再doUpdate或doDelete\n\n  ```java\n  // do query\n  // sql: select user_id, user_name from t_user where user_name = 'qicz';\n  UserDO userDO = UserDO.dao(UserDO.class).eq(UserDO::getUserName, \"qicz\").select(UserDO::getUserId, UserDO::getUserName).doQuery();\n  \n  // do delete\n  // sql: delete from t_user where user_name = 'qicz' and sex = 1;\n  userDO.eq(UserDO::getSex: 1).doDelete();\n  \n  // do update\n  // sql: update t_user set user_name = 'qicz-new-name' where user_name = 'qicz' and sex = 1;\n  userDO.set(UserDO::getUserName, \"qicz-new-name\").doUpdate();\n  ```\n  \n- by\n\n  ```java\n  // sql: select user_id, user_name from t_user where user_name = 'qicz' and sex = 1;\n  UserDO userDO = UserDO.dao(UserDO.class);\n  userDO.setUserName(\"qicz\");\n  userDO.setSex(1);\n  userDO.by(userDO).select(UserDO::getUserId, UserDO::getUserName).doQuery();\n  ```\n\n  \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopeningo%2Fmybatis-x","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopeningo%2Fmybatis-x","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopeningo%2Fmybatis-x/lists"}