mysql-generator用法_Mybatis-Generator 进阶用法 快速开发 跟sql说再见

熟悉Mybatis-generator的朋友对下面这个Mapper接口应该不陌生

public interface EmployeeMapper {

int deleteByPrimaryKey(Long id);

int insert(Employee entity);

Employee selectByPrimaryKey(Long id);

List selectAll();

int updateByPrimaryKey(Employee entity);

}

当我们点击生成后, generator便帮我们生成了这5个方法

但随着业务的复杂性的增加, 这5个方法根本不够用, 甚至说, 很多时候用不上, 基本都是自己编写新的方法和对应的sql.

在xml中编写sql, 没有编译器帮我们检查语法, 或者使用了mybatis的标签,如foreach,where,if...等. 这样的sql即便是高手, 也不敢拍胸口说绝对没问题.

增加了一个mapper方法, 写一条sql, 最后还要一番测试

然而, 作为ORM框架的头马, Mybatis已经给出了解决方案, 下面正文开始

首先, 打开generator-config.xml文件

/p>

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

connectionURL="jdbc:mysql:///spring?useSSL=false" userId="root" password="admin">

targetProject="src/main/resources">

type="XMLMAPPER" targetProject="src/main/java">

此配置文档已做了大量简略, 不可直接使用, 贴出来是让大家留意标签中的targetRuntime属性的值"MyBatis3Simple"

当targetRuntime的值为"MyBatis3Simple"时, 生成的mapper便只有5个方法, 当我们把Simple删掉后再生成一遍, 神奇的事情发生了

`此时应为`

/**

* Created by Mybatis Generator 2018/07/15 14:14

*/

public interface EmployeeMapper {

long countByExample(EmployeeExample example);

int deleteByExample(EmployeeExample example);

int deleteByPrimaryKey(Long id);

int insert(Employee entity);

int insertSelective(Employee entity);

List selectByExample(EmployeeExample example);

Employee selectByPrimaryKey(Long id);

int updateByExampleSelective(@Param("record") Employee record, @Param("example") EmployeeExample example);

int updateByExample(@Param("record") Employee record, @Param("example") EmployeeExample example);

int updateByPrimaryKeySelective(Employee entity);

int updateByPrimaryKey(Employee entity);

}

并且domain中除了Employee, 多了一个EmployeeExample 的类, 再打开xml文件, 已经自动生成了一大堆对应的sql.

怎么回事呢, 下面通过几个业务场景来说明这些方法的使用

Employee表中只有几个字段:

id, name, age, dept_id

可以自行创建表尝试

查询年龄大于30岁的员工

EmployeeExample example = new EmployeeExample();

example.createCriteria().andAgeGreaterThan(30);

List employeeList = employeeMapper.selectByExample(example);

`嗯,没错,就是这么简单`

EmployeeExample, 可以理解为是一个封装条件的对象, 这个对象里面封装了所有字段的>=

查询名字含有李字的员工

EmployeeExample example = new EmployeeExample();

example.createCriteria().andNameLike("%李%");

List employeeList = employeeMapper.selectByExample(example);

`嗯,没有问题`

看到这里, 也许你疑惑他底层是怎么实现的, 当你点方法进去看源码和看完xml的sql语句时, 也就理解了

把部门id为1的员工的部门id改为2

EmployeeExample example = new EmployeeExample();

example.createCriteria().andDeptIdEqualTo(1L);

Employee employee = new Employee();

employee.setDeptId(2L);

employeeMapper.updateByExampleSelective(employee, example);

`嗯, 更新的时候得传更新后的对象和条件进去`

当我们只想更新某些字段的时候, 只需要传一个只含有某些的字段的对象进去就行, selective会帮我们筛选, 只更新有值的字段

删除所有部门id为1的员工

EmployeeExample example = new EmployeeExample();

example.createCriteria().andDeptIdEqualTo(1L);

employeeMapper.deleteByExample(example);

`嗯, 还是这么简单`

以上便是Mybatis-Generator 进阶用法的简单使用, 更多功能大家可以在实际开发中慢慢探索.

自从用了高阶用法, 除掉个别需求, 我已经基本3个月没写过sql了. 而是变成使用java写sql, 维护性, 可读性都增强了, 只要方法使用对了, sql就不会错, 不用像以前得一遍遍的去测试sql有没写错, mybatis标签有没用对.

最后, 赞美一句Mybatis大法好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis Generator(MBG)是一个代码生成器,用于为MyBatis和iBATIS生成代码。它可以根据数据库表结构自动生成访问表的代码。MBG的主要目的是简化与数据库表交互的初始设置,并减少常见的CRUD(创建,检索,更新,删除)操作的代码编写工作。然而,MBG仅生成简单的CRUD操作,对于连接查询或存储过程等复杂操作,仍然需要手动编写SQL和对象代码。 MBG可以生成多种类型的Java客户端类,适用于MyBatis 3.x的映射器接口。这些Java客户端类可以用于与数据库表进行交互。 要使用MyBatis Generator,您需要在项目的pom.xml文件中引入相应的依赖。在plugin标签中配置mybatis-generator-maven-plugin插件,并指定生成配置文件的路径、是否覆盖已有文件以及是否显示详细输出信息。 您可以在pom.xml中的dependencies标签中引入mysql-connector-java依赖,以便在生成代码时与MySQL数据库进行交互。 总结起来,MyBatis Generator是一个用于生成MyBatis和iBATIS代码的工具,可以根据数据库表结构自动生成访问表的代码。它可以生成简单的CRUD操作的代码,并且可以生成适用于MyBatis 3.x的Java客户端类。要使用MyBatis Generator,您需要在项目的pom.xml文件中配置相应的插件和依赖。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MyBatis Generator使用方法(详细)](https://blog.csdn.net/qq_48581332/article/details/123674440)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值