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的字段,不会影响有默认值的字段)ListselectByExample(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 autoMybatis0.0.1-SNAPSHOT org.mybatis mybatis3.2.5 org.mybatis.generator mybatis-generator-core1.3.2 mysql mysql-connector-java5.1.38
然后新建如下包:
文章图片
mybatis.dao (用于放mapper 的java 接口)
mybatis.entity (用于放实体对象)
在src/main/resources 下新建目录mybatis及它的子目录mapper
新建baseInfoGeneratorConfig.xml文件
新建jdbc.properties文件
文章图片
拷贝如下内容进jdbc.properties 要改为正确地址,用户名, 密码
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/base_info?useSSL=falsejdbc.username=rootjdbc.password=自已改密码
拷如下内容进入baseInfoGeneratorConfig.xml
上面的都搞好
现在要写一下代码了
在根目录下建一个 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 中增加)
【MyBatis逆向工程生成dao层增删改查的操作】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- ssh生成公钥秘钥
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- 15、IDEA学习系列之其他设置(生成javadoc、缓存和索引的清理等)
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统