4.spring-boot2 ------mybatis generator

本文介绍如何在Spring Boot项目中使用MyBatis代码生成器自动生成model、mapper和XML文件,包括pom文件配置、生成器配置、集成MyBatis到Spring Boot以及创建Service层和服务实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明: mybatis简单使用,代码生成.

1.pom文件修改:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>berg.study.hello</groupId>
   <artifactId>hello-spring-boot</artifactId>
   <version>0.0.2-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>hello-spring-boot</name>
   <description>add jdbc</description>
    <!-- lookup parent from repository -->
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.4.RELEASE</version>
      <relativePath/>
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
        <!--mysql连接-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
            <scope>runtime</scope>
        </dependency>
        <!--mybatis 使用-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--mybatis 代码生成-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>

   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
            <!--mybatis 代码生成相关插件,生成相关代码后,必须及时关闭该插件,以免重复生成sql-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <!-- 数据库驱动-->
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.46</version>
                    </dependency>
                </dependencies>

                <!-- 自动生成 -->
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <!-- 指定文件位置好像不起作用,始终默认读取src/main/resources/generatorConfig.xml文件 -->
                            <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                            <!--允许移动生成的文件-->
                            <verbose>true</verbose>
                            <!--允许覆盖生成的文件-->
                            <overwrite>true</overwrite>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
      </plugins>
   </build>
</project>

2.新建配置文件,如: src/main/resources/generatorConfig.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration >
    <!-- 数据库驱动
    <classPathEntry location="D://project//try//Recycling//WebContent//WEB-INF//lib//mysql-connector-java-5.1.13.jar" />
    -->
    <context id="CourseTables" targetRuntime="MyBatis3">
        <!--去掉注释 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost/test" userId="test_bg"
                        password="test_bg2018">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- 生成模型的包名和位置 -->
        <javaModelGenerator targetPackage="berg.study.hello.boot.model"
                            targetProject="src//main//java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置 -->
        <sqlMapGenerator targetPackage="berg.study.hello.boot.mysql.mybatis.mapper"
                         targetProject="src//main//java">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="berg.study.hello.boot.mysql.mybatis.mapper" targetProject="src//main//java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 要生成哪些表-->
        <table schema="course" tableName="test_order" domainObjectName="OrderInfo" enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false" >
            <!--<property name="useActualColumnNames" value="true"/>-->
            <generatedKey column="id" sqlStatement="MySql" identity="true" />
        </table>
    </context>
</generatorConfiguration>

3. 通过maven插件或者maven命令: mvn mybatis-generator:generate,获得model,mapper,如:

OrderInfo.java,OrderInfoMapper.java,OrderInfoMapper.xml

4.创建mybatis配置类:

@Configuration
@MapperScan("berg.study.hello.boot.mysql.mybatis.mapper")
public class MybatisConfig {
    @Resource
    private DataSource dataSource;

    /**
     * 让spring 容器管理
     * @return
     */
    @Bean
    public SqlSessionFactoryBean getSessionFactory(){
        SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;
    }
}

5.创建service:

public interface OrderInfoService {
    /**
     * 配置实现
     * @param orderNo
     * @return
     */
    OrderInfo getOrderInfoById(Long orderNo);

    /**
     * 注解实现
     * @param goodsNo
     * @return
     */
    OrderInfo getOrderInfoByGoodsNo(Integer goodsNo);
}
@Service
public class OrderInfoServiceImpl implements OrderInfoService {
    @Resource
    private OrderInfoMapper orderInfoMapper;

    @Override
    public OrderInfo getOrderInfoById(Long orderNo) {
        return orderInfoMapper.selectByPrimaryKey(orderNo);
    }

    @Override
    public OrderInfo getOrderInfoByGoodsNo(Integer goodsNo) {
        return orderInfoMapper.getOrderByGoodsNo(goodsNo);
    }
}

6.创建测试用例:

@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloSpringBootApplicationTests {
    @Resource
    private OrderInfoService orderInfoService;

    @Test
    public void testMybatis3(){
        final Long orderNo=4L;
        OrderInfo orderInfo=orderInfoService.getOrderInfoById(orderNo);
        Assert.assertNotNull(orderInfo);
        Assert.assertTrue(orderInfo.getLocNo().intValue()==7);
        System.out.println("=======ok========="+orderInfo);
        final Integer goodsNo=223;
        OrderInfo orderInfoNew=orderInfoService.getOrderInfoByGoodsNo(goodsNo);
        System.out.println("==========another order======"+orderInfoNew);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值