扩展mybatis逆向工程(结合模板引擎生成crud controller,service和serviceImpl)

##1.导入maven依赖

<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.23</version>
		</dependency>

		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.5</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.41</version>
		</dependency>

##2.创建generatorConfig.xml文件 并修改文件路径的和MySQL的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <context id="MysqlContext" targetRuntime="com.wjh.generationcode.GeneratorConfiguration.InsoIntrospectedTable" defaultModelType="flat">

        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <commentGenerator type="com.wjh.generationcode.GeneratorConfiguration.MyCommentGenerator">
            <property name="suppressDate" value="false"/>
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://********:5432/sc?charSet=utf-8" userId="postgres"
                        password="postgres">
        </jdbcConnection>

        <javaModelGenerator targetPackage="test.model" targetProject="C:\soft\ideworkspace\generationcode\src\main\java">
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="test.xml"  targetProject="C:\soft\ideworkspace\generationcode\src\main\java"/>

        <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="test.dao"  targetProject="C:\soft\ideworkspace\generationcode\src\main\java"/>
        <!-- 需要生成代码的表名,每个表一个table节点如下 -->
        <table tableName="user" domainObjectName="User"/>

    </context>
</generatorConfiguration>

##3.自定义mybatis逆向项工程
实现IntrospectedTableMyBatis3SimpleImpl.calculateXmlMapperGenerator()这个方法是mybatis成成xml的方法 再这个基础上通过模板引擎freemarker 生成我们 controller,service和serviceImpl代码

public class InsoIntrospectedTable extends IntrospectedTableMyBatis3SimpleImpl {
   

    /**
     * XML的生成方法
     * @param javaClientGenerator
     * @param warnings
     * @param progressCallback
     */
    @Override
    protected void calculateXmlMapperGenerator(AbstractJavaClientGenerator javaClientGenerator, List<String> warnings, ProgressCallback progressCallback) {
   
        //这个添加自定模板生成方法
        this.xmlMapperGenerator = new MySimpleXMLMapperGenerator();
        this.initializeAbstractGenerator(this.xmlMapperGenerator, warnings, progressCallback);
    }
  }


public class MySimpleXMLMapperGenerator extends SimpleXMLMapperGenerator {
   
    static FileUrl fileUrl;
    @Override
    protected XmlElement getSqlMapElement() {
   
        FullyQualifiedTable table = this.introspectedTable.getFullyQualifiedTable();
        this.progressCallback.startTask(Messages.getString("Progress.12", new String[]{
   table.toString()}));
        XmlElement answer = new XmlElement("mapper");
        String namespace = this.introspectedTable.getMyBatis3SqlMapNamespace();
        answer.addAttribute(new Attribute("namespace", namespace));
        this.context.getCommentGenerator().addRootComment(answer);
        this.addResultMapElement(answer);
        this.addDeleteByPrimaryKeyElement(answer);
        this.addInsertElement(answer);
        this.addUpdateByPrimaryKeyElement(answer);
        this.addSelectByPrimaryKeyElement(answer);
        this.addSelectAllElement(answer);
        //this.addCountListElement(answer);
       // this.addQueryPageListElement(answer);
        //这个读取配置文件  controller,service和serviceImpl 生成的路径配置
        getProperties();
        fileUrl.setBeanurl(introspectedTable.getBaseRecordType());
        try {
   
            genDAO( introspectedTable.getTableConfiguration().getDomainObjectName(),"Integer","id");
            genController( introspectedTable.getTableConfiguration().getDomainObjectName(),"Integer","id");
            genService( int
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,我可以为您提供一些基本的MyBatis-Plus的ServiceController的编写示例。 首先,让我们假设您已经有了一个基本的实体类,例如User,并且已经使用MyBatis-Plus生成了对应的Mapper接口。 接下来,我们可以编写User的Service类,该类将提供一些基本的CRUD操作: ```java @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public List<User> getUserList() { return list(); } @Override public User getUserById(Long id) { return getById(id); } @Override public boolean saveUser(User user) { return save(user); } @Override public boolean updateUser(User user) { return updateById(user); } @Override public boolean deleteUser(Long id) { return removeById(id); } } ``` 接下来,我们可以编写User的Controller类,该类将提供一些基本的REST API: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping public List<User> getUserList() { return userService.getUserList(); } @GetMapping("/{id}") public User getUserById(@PathVariable Long id) { return userService.getUserById(id); } @PostMapping public boolean saveUser(@RequestBody User user) { return userService.saveUser(user); } @PutMapping("/{id}") public boolean updateUser(@PathVariable Long id, @RequestBody User user) { user.setId(id); return userService.updateUser(user); } @DeleteMapping("/{id}") public boolean deleteUser(@PathVariable Long id) { return userService.deleteUser(id); } } ``` 在上面的代码中,我们使用了Spring的注解来标记ServiceController,以及使用了@Autowired注解来注入Service。 除此之外,我们还使用了一些常见的HTTP请求注解(如@GetMapping、@PostMapping、@PutMapping和@DeleteMapping)来定义REST API的路由和请求方法,以及使用了@RequestBody和@PathVariable注解来获取请求体和路径参数。 希望这些示例可以帮助您更好地理解如何使用MyBatis-Plus编写ServiceController

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值