您的当前位置:首页正文

【springboot】使用代码生成器快速开发

2024-11-30 来源:个人技术集锦

接上一,使用mybatis-plus-generator实现简易代码文件生成

fast-demo-web模块中的pom.xml中添加mybatis-plus-generatorfreemarkerLombok依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.7</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

新建CodeGenerator

public class CodeGenerator {

    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/my_demo?useUnicode=true&characterEncoding=UTF-8";
        String username = "root";
        String password = "123456";
        String moduleName = "sys";  // 模块名
        String mapperPath = "E:\\java\\fast-demo\\fast-demo-web\\fast-demo-dao\\src\\main\\resources\\mapper\\" + moduleName;  // mapper文件存放位置
        String tables = "sys_user,sys_role,sys_menu,sys_user_role,sys_role_menu";   // 需要生成对应代码的表
        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author("cyfy") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .outputDir("E:\\java\\fast-demo\\fast-demo-web\\fast-demo-dao\\src\\main\\java"); // 指定输出目录
                })
                .dataSourceConfig(builder ->
                        builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                            int typeCode = metaInfo.getJdbcType().TYPE_CODE;
                            if (typeCode == Types.SMALLINT) {
                                // 自定义类型转换
                                return DbColumnType.INTEGER;
                            }
                            return typeRegistry.getColumnType(metaInfo);
                        })
                )
                .packageConfig(builder ->
                        builder.parent("com.cyfy.fastdemo") // 设置父包名
                                .moduleName(moduleName) // 设置父包模块名
                                .pathInfo(Collections.singletonMap(OutputFile.xml, mapperPath)) // 设置mapperXml生成路径
                )
                .strategyConfig(builder ->
                        builder.addInclude(tables) // 设置需要生成的表名
                                .addTablePrefix("sys_") // 设置过滤表前缀
                )
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

这里因为官网的快速生成代码是根据3.5.7版本写的,项目之前用的mybatis-plus是3.5.2,因为赖得找之前3.5.2版本的CodeGenerator代码,所以这里直接将版本提升至3.5.7

执行代码后

fast-demo-dao模块中会根据数据库自动生成对应的controller、service、mapper、entity等简单的代码文件

根据所需,将生成的文件移至不同模块中

将之前写的UserService、UserController、UserServiceImpl代码复制粘贴至对应文件

UserController

@RestController
@Api("用户信息接口")
@RequestMapping("/sys")
public class UserController {
    @Autowired
    private IUserService userService;
    @Autowired
    private RedisConfig redis;

    @RequestMapping(value = "/user",method = RequestMethod.GET)
    @ApiOperation(value = "获取所有用户信息", notes = "返回用户信息")
    public List<User> getUserList(){
        List<User> userList = userService.getUserList();
        // redis.set("userList",userList.toString());
        return userList;
    }
}

IUserService

public interface IUserService extends IService<User> {
    List<User> getUserList();
}

UserServiceImpl

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    @Autowired(required=false)
    private UserMapper userMapper;

    @Override
    public List<User> getUserList() {
        return userMapper.selectList(null);
    }
}

UserMapper

@Mapper
public interface UserMapper extends BaseMapper<User> {

}

运行项目后,我们依旧能访问http://localhost:8080/swagger-ui.html

显示全文