MyBatis-plus在eclipse中的使用详解

本文详细介绍如何在Eclipse环境中配置MyBatis Plus,并通过具体示例演示如何使用该框架进行CRUD操作。涵盖依赖配置、实体类创建、DAO接口定义、Mapper文件编写和服务层实现等关键步骤。

1.在eclipse里面添加pom.xml的配置

<dependency>
       <groupId>org.apache.velocity</groupId>
       <artifactId>velocity</artifactId>
       <version>1.7</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>2.1.6</version>
</dependency>

注意:mybatis-plus会自动维护mybatis以及mybatis-spring的依赖,所以不需要引入后两者,避免发生版本冲突


2.修改配置文件
在spring配置文件中application-dao.xml中,将mybatis的配置替换为


<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 自动扫描Mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:mybatis/*/*.xml"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
        <property name="typeAliasesPackage" value="com.baomidou.springmvc.model.*"/>
        <property name="plugins">
            <array>
                <!-- 分页插件配置 -->
                <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
                    <property name="dialectType" value="mysql"/>
                </bean>
            </array>
        </property>
        <!-- 全局配置注入 -->
        <property name="globalConfig" ref="globalConfig" /> 
	</bean>
	<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
        <!-- 
            AUTO->`0`("数据库ID自增")
             INPUT->`1`(用户输入ID")
            ID_WORKER->`2`("全局唯一ID")
            UUID->`3`("全局唯一ID")
        -->
        <property name="idType" value="2" />
        <!--
            MYSQL->`mysql`
            ORACLE->`oracle`
            DB2->`db2`
            H2->`h2`
            HSQL->`hsql`
            SQLITE->`sqlite`
            POSTGRE->`postgresql`
            SQLSERVER2005->`sqlserver2005`
            SQLSERVER->`sqlserver`
        -->
        <!-- Oracle需要添加该项 -->
        <!-- <property name="dbType" value="oracle" /> -->
        <!-- 全局表为下划线命名设置 true -->
        <property name="dbColumnUnderline" value="true" />
    </bean>
开始使用
1.写实体


/*
 * 这里有两个注解需要注意,第一是@tableName("user"),它是指定与数据库表的关联,这里的注解意味着你的数据库里应该有一个名为user的
  *表与之对应,
 * 并且数据表的列名应该就是User类的属性,对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),
 * 表示排除User类中的属性.
 */

@TableName("Items")
public class Items implements Serializable{
	
    private Integer id;

    private String name;

    private Float price;

    private String pic;

    private Date createtime;

    private String detail;
    @TableField(exist = false)
    
    private String test;
}

2.写dao接口

/**
 * mybatisplus dao接口
 * @author LY
 *
 */
public class itemsExtMapper extends BaseMapper<Items>{
	@Select("selectItemsList")
	List<Items> selectItemsList(Pagination page,String state);
}
3.新建Mapper文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="gz.kd.ItemsExtMapper">
    <!-- 通用查询结果列-->
    <sql id="Base_Column_List">
        id, name, age
    </sql>

    <select id="selectItemsList" resultType="Items">
        SELECT * FROM sys_user WHERE state=#{state}
    </select>
</mapper>

4.新建service层

/**
 * ItemsExtService继承了ServiceImpl类,mybatis-plus通过这种方式为我们注入了itemsExtMapper,
 * 样可以使用service层默认为我们提供的很多方法,也可以调用我们自己在dao层编写的操作数据库的方法.
 * Page类是mybatis-plus提供分页功能的一个model,继承了Pagination,这样我们也不需要自己再编写一个Page类,
 * 直接使用即可.
 * @author LY
 *
 */
public class ItemsExtService extends ServiceImpl<itemsExtMapper, Items>{
	public Page<Items> selectItemsPage(Page<Items> page, String state) {
        page.setRecords(baseMapper.selectItemsList(page,state));
        return page;
    }
}


5.controller中的使用

        Page page=new Page(1,10);
        page = itemsService.selectItemsPage(page, "NORMAL");

Mybatisplus的条件构造器

使用entityWrapper可以完成一些简单的条件查询


public void test(){
       EntityWrapper ew=new EntityWrapper();
       ew.setEntity(new User());
       String name="wang";
       Integer age=16;
       ew.where("name = {0}",name).andNew("age > {0}",age).orderBy("age");
       List<User> list = userService.selectList(ew);
       Page page2 = userService.selectPage(page, ew);
    }
自定义的mapper同样能后使用EntityWrapper
1.在Mappper中定义:
 List<Items> selectMyPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);
2.在mapper文件中定义:
<select id="selectMyPage" resultType="Items">
   		SELECT * FROM items ${ew.sqlSegment}
	</select>

@Test
public void testTSQL11() {
    /*
     * 实体带查询使用方法  输出看结果
     */
    ew.setEntity(new Items(1));
    ew.where("pic={0}", "'kd.jpg'").and("id=1")
            .orNew("status={0}", "0").or("status=1")
            .notLike("nlike", "notvalue")
            .andNew("new=xx").like("hhh", "ddd")
            .andNew("pwd=11").isNotNull("n1,n2").isNull("n3")
            .groupBy("x1").groupBy("x2,x3")
            .having("x1=11").having("x3=433")
            .orderBy("dd").orderBy("d1,d2");
    System.out.println(ew.getSqlSegment());
}





<think> 首先,用户的问题是关于“MyBatis-Plus Generator的使用教程”。参考引用中提供了相关信息: - 引用[1]提到MyBatis-Plus Generator UI,这是一个图形化工具。 - 引用[3]和[4]介绍了MyBatis-Plus的AutoGenerator。 - 引用[5]讨论了mybatisplus使用generator的例子。 用户指定要获取“MyBatis-Plus Generator的使用教程”,所以我需要聚焦在这个主题上。 系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户可见层指令: - 回答结构清晰,逐步解决问题。 - 保证回答真实可靠。 用户上一次的问题:用户说“我想获取MyBatis-Plus Generator的使用教程 请问MyBatis-Plus Generator使用教程”。所以,核心是提供教程。 从引用中提取关键信息: - 引用[3]: AutoGenerator是MyBatis-Plus的代码生成器,可以快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。 - 引用[4]: 特性包括支持代码生成,比MyBatis官方的Generator更强大。 - 引用[1]: Generator UI提供图形化界面。 我需要提供一个结构清晰的教程。可能的步骤: 1. **引入依赖**:在项目中添加MyBatis-Plus Generator的依赖。 2. **配置AutoGenerator**:设置数据库连接、包路径、策略等。 3. **运行Generator**:执行代码生成。 4. **可选:使用Generator UI**,如果用户提到图形化界面。 用户没有指定是命令行还是图形化工具,所以我要覆盖两者或根据引用优先AutoGenerator。 教程结构: - **介绍**:简要解释MyBatis-Plus Generator是什么。 - **步骤**:分步说明如何使用- 依赖引入 - 配置代码 - 运行 - **示例代码**:提供代码片段。 - **相关引用**:自然地添加引用标识。 最后,生成相关问题。 使用中文回答。 步骤细化: 1. **引入依赖**:在pom.xml中添加依赖。 2. **创建配置类**:使用AutoGenerator配置。 3. **设置参数**:如数据库连接、全局配置、包配置、策略配置。 4. **执行生成**。 5. **额外:使用UI工具**。 参考引用: - [^3] 提到AutoGenerator的简介和使用- [^1] 提到Generator UI的启动。 所以,我会整合这些。 在回答末尾,生成相关问题。 确保LaTeX:由于这是关于代码生成,可能没有数学表达式,但如果提到,要使用$...$。 例如,如果需要公式,但这里可能不需要,所以聚焦在代码。 回答结构: - 标题:MyBatis-Plus Generator使用教程 - 介绍:基于引用[3]和[4],解释AutoGenerator。 - 步骤: 1. 添加依赖 2. 配置AutoGenerator 3. 运行Generator 4. 可选:使用Generator UI - 代码示例:提供配置示例。 - 总结。 相关问题生成: 如:1. 如何自定义生成模板?2. 如何处理多表关联?等。 </think> ### MyBatis-Plus Generator使用教程 MyBatis-Plus Generator(简称Generator)是MyBatis-Plus框架中的一个核心组件,主要用于自动生成代码,包括Entity、Mapper、Mapper XML、Service、Controller等模块。它能显著提高开发效率,减少手动编写重复代码的工作量。Generator有两种主要形式:基于代码的AutoGenerator(命令行方式)和基于Web UI的Generator UI(图形化工具)。以下教程结合引用信息,分步讲解如何使用Generator。教程基于官方文档[^3],并使用Java语言演示。 #### 1. **准备工作:引入依赖** 在项目中添加MyBatis-Plus Generator的依赖。通常使用Maven项目,在`pom.xml`文件中添加以下依赖: ```xml <dependencies> <!-- MyBatis-Plus核心依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> <!-- 例如: 3.5.3 --> </dependency> <!-- Generator依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>最新版本</version> <!-- 例如: 3.5.3 --> </dependency> <!-- 模板引擎依赖(可选,用于自定义模板) --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>最新版本</version> <!-- 例如: 2.3.31 --> </dependency> </dependencies> ``` 提示:确保版本匹配,最新版本可参考MyBatis-Plus官方文档[^4]。如果您使用Gradle或其他构建工具,需调整配置。 #### 2. **配置AutoGenerator(命令行方式)** AutoGenerator通过Java代码配置数据库连接和生成策略。以下是一个完整的配置示例,创建一个Java类(如`CodeGenerator.java`): ```java import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; public class CodeGenerator { public static void main(String[] args) { // 1. 初始化AutoGenerator对象 AutoGenerator generator = new AutoGenerator(); // 2. 全局配置 GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); // 输出路径(项目根目录) globalConfig.setAuthor("您的名字"); // 作者信息 globalConfig.setOpen(false); // 生成后打开文件夹?false为不打开 globalConfig.setFileOverride(true); // 覆盖现有文件 globalConfig.setServiceImplName("%sService"); // Service接口后缀 generator.setGlobalConfig(globalConfig); // 3. 数据源配置 DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/您的数据库名?useSSL=false"); dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver"); dataSourceConfig.setUsername("root"); dataSourceConfig.setPassword("您的密码"); generator.setDataSource(dataSourceConfig); // 4. 包配置 PackageConfig packageConfig = new PackageConfig(); packageConfig.setParent("com.example.demo"); // 父包名(您的项目包) packageConfig.setEntity("entity"); // Entity包名 packageConfig.setMapper("mapper"); packageConfig.setService("service"); packageConfig.setController("controller"); generator.setPackageInfo(packageConfig); // 5. 策略配置(表生成策略) StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setNaming(NamingStrategy.underline_to_camel); // 表名转驼峰命名 strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); // 列名转驼峰 strategyConfig.setEntityLombokModel(true); // 使用Lombok注解 strategyConfig.setInclude("表1","表2"); // 指定要生成的表(逗号分隔) strategyConfig.setRestControllerStyle(true); // RESTful风格Controller generator.setStrategy(strategyConfig); // 6. 执行生成 generator.execute(); } } ``` 参数详解- **全局配置(GlobalConfig)**:控制输出目录、作者信息等。 - **数据源配置(DataSourceConfig)**:连接数据库(需替换为您的数据库URL、用户名和密码)。 - **包配置(PackageConfig)**:定义代码生成的包结构。 - **策略配置(StrategyConfig)**:设置命名规则、表名等。`setInclude`指定表名,支持多表。 - 运行后,代码将生成到指定目录中(如`src/main/java`),包含Entity、Mapper、Service等文件[^3]。 #### 3. **运行Generator** - 在IDE中(如IntelliJ IDEA或Eclipse),直接运行`CodeGenerator.java`的`main`方法。 - 控制台会输出生成日志,如:`生成 Entity 成功...`。 - 如果遇到问题,检查数据库连接是否成功,确保表名正确。 #### 4. **可选:使用Generator UI(图形化工具)** 如果您偏好图形界面,MyBatis-Plus Generator UI提供Web UI简化流程: - **启动UI**:添加依赖后(参考引用[^1]),运行内置服务: ```bash # 在命令行执行(确保项目已引入依赖) mvn spring-boot:run ``` 访问 `http://localhost:8080` 打开UI界面。 - **配置参数**:在Web页面填写数据库连接信息、包路径、表名等,点击“生成”按钮。 - 生成效果与AutoGenerator相同,但更直观[^1]。 #### 常见问题与优化 - **自定义模板**:Generator支持Freemarker模板(参考步骤1依赖),通过修改`templateEngine`配置自定义代码样式[^4]。 - **SQL查询生成**:Generator UI可直接导入SQL语句生成代码(引用[^1])。 - **注意事项**:Generator不会覆盖现有文件(除非`setFileOverride(true)`),建议在测试环境运行。 - **性能**:生成速度快,单表生成通常在1秒内完成,MyBatis-Plus对原生MyBatis无侵入,性能损耗小[^4]。 通过以上步骤,您可以快速生成CRUD代码。如需更详细配置,请参考MyBatis-Plus官方文档[^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值