栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis的代码生成器--generator

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis的代码生成器--generator

作用:根据数据库中表自动生成实体类,dao层和xml映射文件完成简单的增删改查。
官网:http://mybatis.org/generator/

实例:完成两张表的自动化创建实体类,dao层,mapper层
前置条件
第一张表:tbl_user


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for tbl_user
-- ----------------------------
DROP TABLE IF EXISTS `tbl_user`;
CREATE TABLE `tbl_user`  (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tbl_user
-- ----------------------------
INSERT INTO `tbl_user` VALUES (2, 'zs', 'zs@China.com');
INSERT INTO `tbl_user` VALUES (4, 'ls', 'ls@China.com');
INSERT INTO `tbl_user` VALUES (5, 'ww', 'ww@China.com');
INSERT INTO `tbl_user` VALUES (8, 'll', 'll@China.com');
INSERT INTO `tbl_user` VALUES (9, 'mary', 'mary@China.com');
INSERT INTO `tbl_user` VALUES (10, 'kangkang', 'kk@China.com');
INSERT INTO `tbl_user` VALUES (11, 'kangkang', 'kk@China.com');
INSERT INTO `tbl_user` VALUES (12, 'mary', 'mary@America.com');

SET FOREIGN_KEY_CHECKS = 1;

第二张表:tb_stu


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for tb_stu
-- ----------------------------
DROP TABLE IF EXISTS `tb_stu`;
CREATE TABLE `tb_stu`  (
  `stu_id` int(11) NOT NULL AUTO_INCREMENT,
  `stu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `stu_age` int(255) NULL DEFAULT NULL,
  `stu_sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `cid` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`stu_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_stu
-- ----------------------------
INSERT INTO `tb_stu` VALUES (1, '张三', 18, '男', 1);
INSERT INTO `tb_stu` VALUES (2, '李四', 19, '女', 2);
INSERT INTO `tb_stu` VALUES (3, '田七', 20, '男', 3);
INSERT INTO `tb_stu` VALUES (5, '赵六', 0, '女', 3);
INSERT INTO `tb_stu` VALUES (6, '赵六', 0, '女', 1);
INSERT INTO `tb_stu` VALUES (8, '赵六', 0, '女', 2);
SET FOREIGN_KEY_CHECKS = 1;

使用步骤
第一步:(1)引入mybatis-generator的依赖jar包。


            repMaven.org.mybatis.generator
            mybatis-generator-core
            1.4.0

第二步:配置文件 generator.xml
注意:






    
    

    

        
        
        

        
        
            
            
        


        
        
            
        

        
        
            
        

        
        
            
            
            
            
        

第三步:在单元测试中或者在main函数中运行配置文件 生成实体层 dao层 mapper层

    @Test
    public void test01() throws Exception{
        List warnings = new ArrayList();
        boolean overwrite = true;
        File configFile = new File("generator.xml");
        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);
    }

注意 生成的实体层 dao层 mapper层会有注释 这时候可以使用如下代码消除注释

		//抑制注释
        
            
        


整体结构图为:

优化:自动生成的实体类名字和自己的数据库中表中列名一致 在idea中看着非常别扭
比如Student实体类

优化的地方
(1)重新写Student实体类中的属性
通过lombok简化代码书写

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private Integer stuId;
    private String stuName;
    private Integer stuAge;
    private String stuSex;
    private Integer cid;
}

修改后为:

测试自动生成的代码

    
    @Test
    public void testStudentFindAll() throws Exception{
        Reader rd = Resources.getResourceAsReader("conf.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(rd);
        SqlSession session = factory.openSession();
        StudentMapper sm = session.getMapper(StudentMapper.class);
        int row = sm.deleteByPrimaryKey(8);
        System.out.println(row);
        session.commit();
        session.close();
    }

运行图:

其余的代码自行测试即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/956067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号