在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:fast-dao开源软件地址:https://gitee.com/fast-product/fast-dao开源软件介绍:Java 极·简ORM框架
示例 User user = UserFastDao.create().dao().insert(user); //增,新增成功后主键会在对象中设置Integer delCount = UserFastDao.create().dao().delete(); //删,可以选择逻辑删除和物理删除Integer updateCount = UserFastDao.create().dao().update(user); //改,操作简单,条件丰富PageInfo<User> page = UserFastDao.create().dao().findPage(1, 10); //查,分页查询 快速入门测试表create table user( id bigint auto_increment comment '主键' primary key, type_id bigint null comment '用户类型', user_name varchar(255) null comment '用户名', age int(10) null comment '年龄', create_time datetime null comment '创建时间', update_time datetime null comment '更新时间', deleted bit null comment '是否删除') comment '用户';create table user_log( id bigint auto_increment comment '主键' primary key, user_id bigint null comment '用户ID', log_info varchar(255) null comment '日志内容', create_time datetime null comment '创建时间', update_time datetime null comment '更新时间', deleted bit null comment '是否删除') comment '用户日志';create table user_type( id bigint auto_increment comment '主键' primary key, type_name varchar(255) null comment '用户名', create_time datetime null comment '创建时间', update_time datetime null comment '更新时间', deleted bit null comment '是否删除') comment '用户类型';INSERT INTO user(`id`, `type_id`, `user_name`, `age`, `create_time`, `update_time`, `deleted`)VALUES (1, 1, 'User1', 1, '2021-09-14 16:46:11', '2021-09-14 16:46:11', false), (2, 1, 'User2', 2, '2021-09-14 16:46:11', '2021-09-14 16:46:11', false), (3, 2, 'User3', 3, '2021-09-14 16:46:11', '2021-09-14 16:46:11', false);INSERT INTO user_type (`id`, `type_name`, `create_time`, `update_time`, `deleted`)VALUES (1, 'Type1', '2021-09-14 16:46:11', '2021-09-14 16:46:11', false), (2, 'Type2', '2021-09-14 16:46:11', '2021-09-14 16:46:11', false);INSERT INTO user_log (`id`, `user_id`, `log_info`, `create_time`, `update_time`, `deleted`)VALUES (1, 1, 'Log1', '2021-09-14 16:46:11', '2021-09-14 16:46:11', false), (2, 1, 'Log2', '2021-09-14 16:46:11', '2021-09-14 16:46:11', false); Maven安装<dependency> <groupId>com.fast-dao</groupId> <artifactId>fast-dao</artifactId> <version>9.9.3</version></dependency> 文件生成public static void main(String[] args) { //数据库连接 --改为自己数据库的连接 String mysqlUrl ="jdbc:mysql://127.0.0.1:3306/my_test?useUnicode=true&characterEncoding=utf-8"; //数据库用户名 --改为自己数据库用户名 String userName = "root"; //数据库密码 -改为自己数据库密码 String password = "kaixinzyw"; //数据库驱动 --改为自己数据库驱动 String drive = "com.mysql.cj.jdbc.Driver"; //文件生成的包路径 --改为自己项目包路径 String packagePath = "com.fast.test"; //生成的表名 --改为自己所需要生成的表 String[] tableNames = {"user","user_log","user_type"}; FileCreateConfig config = new FileCreateConfig(); //数据库连接 config.setDBInfo(mysqlUrl,userName,password,drive); //文件生成的包路径 config.setBasePackage(packagePath); //选择生成的文件 config.setNeedModules(FileCreateConfig.CodeCreateModule.Base); //需要生成的表名 config.setCreateTables(tableNames); //生成代码 TableFileCreateUtils.create(config);} 其他配置生成DTO//生成DTOconfig.setNeedModules(FileCreateConfig.CodeCreateModule.DTO);//DOT是否继承POJOconfig.setDtoExtendsPOJO(true); 表前缀设置//是否生成表前缀config.setPrefix(false,false,null); lombok注解//是否使用lombok插件,默认falseconfig.setUseLombok(true); Swagger2注解//是否在DTO上使用Swagger2注解,默认falseconfig.setUseDTOSwagger2(true);//是否在POJO上使用Swagger2注解,默认falseconfig.setUsePOJOSwagger2(true); 框架配置Spring环境Spring环境下无需任何配置即可使用,框架可自动识别Spring配置的数据源信息 非Spring环境public static void fastDaoConfig() { /** * 数据源配置 */ FastDaoConfig.dataSource(getDataSource());}//数据源信息private static DataSource getDataSource() { //数据库连接 -改为自己数据库的连接 String mysqlUrl ="jdbc:mysql://127.0.0.1:3306/my_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&useOldAliasMetadataBehavior=true"; //数据库用户名 -改为自己数据库用户名 String userName = "root"; //数据库密码 -改为自己数据库密码 String password = "kaixinzyw"; //数据库驱动 改为自己数据库驱动 String drive = "com.mysql.cj.jdbc.Driver"; DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(mysqlUrl); dataSource.setUsername(userName); dataSource.setPassword(password); dataSource.setDriverClassName(drive); return dataSource;} 其他配置日志输出/** * 设置SQL日志打印,默认关闭 * 参数1: 日志打印级别 DEBUG,INFO,OFF * 参数2: 是否打印详细SQL日志 * 参数3: 是否打印SQL执行结果 */FastDaoConfig.openSqlPrint(SqlLogLevel.INFO,true, true); 逻辑删除/** * 开启逻辑删除功能,开启后会对逻辑删除标记的数据在 更新|删除|查询 时进行保护,可通过模板进行单次操作逻辑删除保护的关闭 * 参数1: 逻辑删除字段名 * 参数2: 逻辑删除标记默认值 */FastDaoConfig.openLogicDelete("deleted", Boolean.TRUE); 自动设置时间/** * 开启自动对数据 新增操作 进行创建时间设置 * 参数1: 需要设置创建时间的字段名 */FastDaoConfig.openAutoSetCreateTime("create_time");/** * 开启自动对数据 更新操作/逻辑删除操作 进行更新时间设置 * 参数1: 需要设置更新时间的字段名 */FastDaoConfig.openAutoSetUpdateTime("update_time"); 示例新增注意:主键如果为数字类型默认自增,自增后ID会Set到新增的对象中主键如果为字符串框架会自动进行设置ObjectId 设置后的ID会Set到新增的对象中ObjectId由以下几部分组成:1. Time 时间戳。2. Machine 所在主机的唯一标识符,一般是机器主机名的散列值。3. PID 进程ID。确保同一机器中不冲突4. INC 自增计数器。确保同一秒内产生objectId的唯一性。 User user = new User();user.setUserName("张三");user.setAge(20);user.setDeleted(false);UserFastDAO.create().dao().insert(user);
INSERT INTO user SET user_name = '张三' , age = 20 , deleted = false
[{"age":20,"deleted":false,"id":189,"userName":"张三"}] 批量新增User user1 = new User();user1.setUserName("张三");user1.setAge(20);user1.setDeleted(false);User user2 = new User();user2.setUserName("李四");user2.setAge(30);user2.setDeleted(false);List<User> userList = new ArrayList<>();userList.add(user1);userList.add(user2);List<User> ls = UserFastDAO.create().dao().insertList(userList);
INSERT INTO user(`id`,`type_id`,`user_name`,`age`,`create_time`,`update_time`,`deleted`) VALUES(null , null , '张三' , 20 , null , null , false ),(null , null , '李四' , 30 , null , null , false ) 删除注意如果设置逻辑删除则调用Updata如果没设置逻辑删除则会调用Delete返回值为删除条目数 通过主键删除UserFastDAO.create().dao().deleteByPrimaryKey(1L);
DELETE FROM user WHERE `id` = 1
UPDATE user SET `deleted` = true WHERE `deleted` = false AND `id` = 1 通过条件删除Integer delete = UserFastDAO.create().userName("张三").dao().delete()
DELETE FROM user WHERE `user_name` = '张三'
UPDATE user SET `deleted` = true WHERE `deleted` = false AND `user_name` = '张三' 更新更新最少必须设置一个条件无论是通过主键更新或条件更新 一但更新的对象主键字段不为空则优先将主键参数设为条件返回值为更新条目数 通过主键更新
User user = new User();user.setId(1L);user.setUserName("更新姓名");UserFastDAO.create().dao().updateByPrimaryKey(user);
UPDATE user SET `id` = 1 , `user_name` = '更新姓名' WHERE `id` = 1 通过主键全字段更新
User user = new User();user.setId(1L);user.setUserName("更新姓名");UserFastDAO.create().dao().updateByPrimaryKeyOverwrite(user);
UPDATE user SET`id` = 1 , `type_id` = null , `user_name` = '更新姓名' , `age` = null , `create_time` = null , `update_time` = null , `deleted` = nullWHERE `id` = 1 通过条件更新User user = new User();user.setUserName("更新姓名");UserFastDAO.create().age().less(10).dao().update(user);
UPDATE user SET`user_name` = '更新姓名'WHERE `age` < 10 查询通过ID查询User user = UserFastDAO.create().dao().findByPrimaryKey(1L);
SELECT `id`,`type_id`,`user_name`,`age`,`create_time`,`update_time`,`deleted`FROM userWHERE `id` = 1LIMIT 1
[{"age":10,"createTime":1632150396000,"deleted":true,"id":1,"typeId":1,"updateTime":1632150399000,"userName":"张三"}] 通过条件查询List<User> userList = UserFastDAO.create().userName().like("张").dao().findAll();
SELECT `id`,`type_id`,`user_name`,`age`,`create_time`,`update_time`,`deleted`FROM userWHERE `user_name` LIKE '%张%'
[{"age":10,"createTime":1632150396000,"deleted":true,"id":1,"typeId":1,"updateTime":1632150399000,"userName":"张三"}] 分页查询PageInfo<User> pageInfo = UserFastDAO.create().userName().like("张").dao().findPage(1, 10);
SELECT `id`,`type_id`,`user_name`,`age`,`create_time`,`update_time`,`deleted`FROM userWHERE `user_name` LIKE '%张%'LIMIT 0 , 10
{ "endRow":1, "hasNextPage":false, "hasPreviousPage":false, "isFirstPage":true, "isLastPage":true, "list":[ { "age":10, "createTime":1632150396000, "deleted":true, "id":1, "typeId":1, "updateTime":1632150399000, "userName":"张三" } ], "navigateFirstPage":1, "navigateLastPage":1, "navigatePages":9, "navigatepageNums":[1], "nextPage":0, "pageNum":1, "pageSize":10, "pages":1, "prePage":0, "size":1, "startRow":1, "total":1} 自定义SQLString sql = "SELECT u.id,u.user_name,u.type_id,t.id,t.type_name FROM user u LEFT JOIN user_type t on u.type_id = t.id where u.id=${id}";Map<String, Object> data = new HashMap<>();data.put("id", 1);List<CustomSqlUserDTO> all = FastCustomSqlDao.create(CustomSqlUserDTO.class, sql, data).findAll();
SELECT u.id,u.user_name,u.type_id,t.id,t.type_name FROM user u LEFT JOIN user_type t on u.type_id = t.id where u.id=1
[ { "id":1, "typeId":1, "userName":"User1", "userType":{ "id":1, "typeName":"Type1" } }] /** * 自定义SQL测试DTO */@Table(name =
|
请发表评论