MyBatis逆向工程生成dao层增删改查的操作

网友投稿 737 2022-12-17

MyBatis逆向工程生成dao层增删改查的操作

MyBatis逆向工程生成dao层增删改查的操作

目录MyBatis逆向工程生成dao层增删改查如下:Mybatis反向工程的使用首先,用eclipse 建一个maven 项目这时我们的项目结构是这个样子的现在要写一下代码了例如,我们在新的xml文件中这样写

MyBatis逆向工程生成dao层增删改查

如下:

int countByExample(BUserExample example); //根据条件查询数量

/**

* 示例

* public int countByExample() {

* BUserExample userExample = new BUserExample();

* BUserExample.Criteria criteria = userExample.createCriteria();

* criteria.andUsernameEqualTo("fan");

* int count = userMapper.countByExample(userExample);

* return count;

* }

* 相当于:select count(*) from user where username = 'fan'

*/

int deleteByExample(BUserExample example); //根据条件删除数据(一条或多条)

/**

* 示例

* public int deleteByExample() {

* BUserExample userExample = new BUserExample();

* BUserExample.Criteria criteria = userExample.createCriteria();

* criteria.andUsernameEqualTo("fan");

* int count = userMapper.deleteByExample(userExample);

* return count;

* }

* 相当于:delete from user where username = 'fan'

*/

int deleteByPrimaryKey(Integer id); //根据主键删除数据

int insert(BUser record); //插入数据(插入一条数据)

int insertSelective(BUser record); //插入数据(插入一条数据,只插入不为null的字段,不会影响有默认值的字段)

List selectByExample(BUserExample example); //根据条件查询数据

/**

* 示例:

* public List getList() {

* BUserExample userExample = new BUserExample();

* BUserExample.Criteria criteria = userExample.createCriteria();

* criteria.andUsernameEqualTo("fan");

* userExample.setOrderByClause("username desc");

* List users = userMapper.selectByExample(userExample);

* return users;

* }

* 相当于:select * from user where username = 'fan' order by username desc

*/

BUser selectByPrimaryKey(Integer id); //根据主键查询

int updateByExampleSelective(@Param("record") BUser record, @Param("example") BUserExample example); //按条件更新值不为null的字段

/**

* 示例:

* public int updateByParam(String username) {

* BUserExample userExample = new BUserExample();

* BUserExample.Criteria criteria = userExample.createCriteria();

* criteria.andUsernameEqualTo(username);

* BUser user = new BUser();

* user.setNickname("jdk");

* int update = userMapper.updateByExampleSelective(user, userExample);

* return update;

* }

* 相当于:update user set nickname = 'jdk' where username = #{username}

*/

int updateByExample(@Param("record") BUser record, @Param("example") BUserExample example); //按条件更新

int updateByPrimaryKeySelective(BUser record); //根据主键与条件更新

/**

* 示例:

* public int updateByIdAndParam(String username) {

* BUser user = new BUser();

* user.setId(101);

* user.setUsername(username);

* int update = userMapper.updateByPrimaryKeySelective(user);

* return update;

* }

* 相当于:update user set username = #{username} where id = 101

*/

int updateByPrimaryKey(BUser record); //根据主键更新

Mybatis反向工程的使用

为什么要使用反向工程,因为,快啊。运行一下就可以自动生成,实现,一堆表的增删查改,等于多了个人帮忙工作,为什么不呢 ?

但与别的工具一样,自动生成的东西总是有方便的地方,也会有麻烦的地方。所以,使用前要留点心眼。要不工具变负累,对个人还好 对团队就变祸害了。

因此,下面的教程除了说如何使用,还会说 一个比较重要的技巧和心得,如果有更好的方法,或我说的有什么不对,请直接指出。谢谢

如有问题可以在下面留言,但我不一定有时间回复。

首先,用eclipse 建一个maven 项目

建一个maven 项目

打好勾点next

填好点finish

这时我们的项目结构是这个样子的

打开pom.xml 文件

把如下内容复制进去:

4.0.0

cc.com

autoMybatis

0.0.1-SNAPSHOT

org.mybatis

mybatis

3.2.5

org.mybatis.generator

mybatis-generator-core

1.3.2

<dependency>

mysql

mysql-connector-java

5.1.38

然后新建如下包:

mybatis.dao (用于放mapper 的java 接口)

mybatis.entity (用于放实体对象)

在src/main/resources 下新建目录mybatis及它的子目录mapper

新建baseInfoGeneratorConfig.xml文件

新建jdbc.properties文件

拷贝如下内容进jdbc.properties 要改为正确地址,用户名, 密码

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/base_info?useSSL=false

jdbc.username=root

jdbc.password=自已改密码

拷如下内容进入baseInfoGeneratorConfig.xml

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

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

connectionURL="${jdbc.url}"

userId="${jdbc.username}"

password="${jdbc.password}">

connectionURL="${jdbc.url}"

userId="${jdbc.username}"

password="${jdbc.password}">

enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"

enableSelectByExample="false" selectByExampleQueryId="false" >

上面的都搞好

现在要写一下代码了

在根目录下建一个 GeneratorSqlmap.java 的JAVA 类

然后把以下内容覆盖 GeneratorSqlmap.java 文件

import java.io.File;

import java.util.ArrayList;

import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;

import org.mybatis.generator.config.Configuration;

import org.mybatis.generator.config.xml.ConfigurationParser;

import org.mybatis.generator.internal.DefaultShellCallback;

public class GeneratorSqlmap {

public void generator(String generatorConfigFilePath) throws Exception{

List warnings = new ArrayList();

boolean overwrite = true;

Class.forName("com.mysql.jdbc.Driver");

//指定 逆向工程配置文件

File configFile = new File(generatorConfigFilePath);

ConfigurationParser cp = new ConfigurationParser(warnings);

Configuration config = cp.parseConfiguration(configFile);

DefaultShellCallback callback = new DefaultShellCallback(overwrite);

MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,

callback, warnings);

myBatisGenerator.generate(null);

}

public static void main(String[] args) throws Exception {

try {

GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();

//这里要填对配置文件路径

generatorSqlmap.generator("src/main/resources/baseInfoGeneratorConfig.xml");

} catch (Exception e) {

e.printStackTrace();

}

System.exit(0);

}

}

最后运行,GeneratorSqlmap.java ,然后刷新一下项目,就可以得到非常漂亮的,表的entity,mapper interface,mapper xml

以上的代码可以在下面的github链接中找到

现在我们分享一个,能让自动生成和手工修改和平共存的方法。

为什么要和平共存,因为,在数据库表中要加或减一个字段,重复自动生成有可能覆盖掉原来的。

这里有个经过实验的方案,首先在我们生成完第一次没有问题后,把baseInfoGeneratorConfig.xml 中的生成pojo(entity 你爱叫什么叫什么)

还有生成接口的

的注掉

然后,不要修改系统自动生成的 mapper.xml

(可以为配置文件中改个特别一点的名字(例如带上sys),跟团队的成员说一下就可以了。

然后,别外写一个XML mapper 用于开发

只要namespace 是相同的,还是会在对应的接口中生成

例如,我们在新的xml文件中这样写

只需要在系统生成的JAVA接口中增加:

这样一来,如果数据库需要增加字段。只需简单的三步就可以。

一,把系统生成的配置文件删了。

二,运行自动生成。

三,把新加的字段在对应的pojo(或叫entity 中增加)

就可以,很好的把自动生成和手工修改做出分离。同时也会减少很多不应该出现的错误。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一文秒懂springboot druid 配置
下一篇:解决Maven项目加载spring bean的配置xml文件会提示找不到问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~