系列教程javao2o商城之(三)mybatisgenerator及配置驗證

MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代碼生成器。它將爲全部版本的MyBatis以及版本2.2.0以後的iBATIS版本生成代碼。它將內省數據庫表(或許多表),並將生成可用於訪問表的工件。這減小了設置對象和配置文件以與數據庫表交互的初始麻煩。MBG尋求對簡單CRUD(建立,檢索,更新,刪除)的大部分數據庫操做產生重大影響。您仍然須要爲鏈接查詢或存儲過程手動編寫SQL和對象代碼。

1.mybatis generator安裝使用

1.pom.xml引入

<plugin>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-maven-plugin</artifactId>
      <version>1.3.2</version>
      <configuration>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
      </configuration>
      <executions>
          <execution>
              <id>Generate MyBatis Artifacts</id>
              <goals>
                  <goal>generate</goal>
              </goals>
          </execution>
      </executions>
  </plugin>

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>
    <properties resource="jdbc.properties"/>
    <!-- 數據庫驅動 -->
    <classPathEntry location="/Users/beast/.m2/repository/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar" />
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true" />
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--數據庫連接URL,用戶名、密碼 -->
        <jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}">
        </jdbcConnection>
        <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer true,把JDBC DECIMAL 和
            NUMERIC 類型解析爲java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- 生成模型的包名和位置 -->
        <javaModelGenerator targetPackage="wang.beastxw.javao2o.entity"
                            targetProject="src/main/java">
            <!-- enableSubPackages:是否讓schema做爲包的後綴 -->
            <property name="enableSubPackages" value="true" />
            <!-- 從數據庫返回的值被清理先後的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置XML文件 -->
        <sqlMapGenerator targetPackage="resources/mapper"
                         targetProject="src/main">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="wang.beastxw.javao2o.dao" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 要生成哪些表 -->
        <!-- tableName:用於自動生成代碼的數據庫表;domainObjectName:對應於數據庫表的javaBean類名 -->
        <!--tb_area數據庫代表-->                  <!--別名Book_Info  pojo(實體類明)-->
        <!-- 配置數據庫中的表(%表示全部表),不生成Example類 -->
        <table tableName="tb_area"
               domainObjectName="Area"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

其中classPathEntry的值是數據庫驅動的地址對應maven裏面的jar包,不過這裏由於mysql驅動的問題(不然會一直提示找不到主鍵),要降版本,上一節mysql-connector-java的版本是8.多的,降成如今這個。而且把jdbc.properties換成jdbc.driver=com.mysql.jdbc.Driverjava

3.使用

1.添加maven配置

2.輸入 mybatis-generator:generate -e

2.驗證配置

1.建立地區表

CREATE TABLE `tb_area` (
  `area_id` int(2) NOT NULL AUTO_INCREMENT,
  `area_name` varchar(200) NOT NULL,
  `priority` int(2) NOT NULL DEFAULT '0',
  `create_time` datetime DEFAULT NULL,
  `last_edit_time` datetime DEFAULT NULL,
  PRIMARY KEY (`area_id`),
  UNIQUE KEY `UK_AREA` (`area_name`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

2.點擊以前配置的maven

3.你會發現mybatis generator 會自動生成 entity dao map 文件,是否是爽的飛起,不用本身寫maper.xml了

4.測試一個返回列表(由於mybatis generator不會自動生成查詢全部數據的mybatis,因此本身寫一個)

1.在dao層的AreaMapper裏面添加 queryAreaList這個方法

package wang.beastxw.javao2o.dao;

import wang.beastxw.javao2o.entity.Area;

import java.util.List;

public interface AreaMapper {
    List<Area> queryAreaList();

    int deleteByPrimaryKey(Integer areaId);

    int insert(Area record);

    int insertSelective(Area record);

    Area selectByPrimaryKey(Integer areaId);

    int updateByPrimaryKeySelective(Area record);

    int updateByPrimaryKey(Area record);
}

2.在mapper的AreaMapper.xml下添加

<select id="queryAreaList" resultType="wang.beastxw.javao2o.entity.Area">
    SELECT
    <include refid="Base_Column_List" />
    From tb_area
    ORDER BY priority
    DESC
  </select>

5.寫測試類

1.新建文件以下

2.BaseTest

package wang.beastxw.javao2o;

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * 配置spring 和 junit 整合 , junit 啓動時加載springIOC 容器
 */

@RunWith(SpringJUnit4ClassRunner.class)
// 告訴 junit spring 配置文件在哪裏
@ContextConfiguration({"classpath:spring/spring-dao.xml","classpath:spring/spring-service.xml"})
public class BaseTest {

}

3.AreaDaoTest

先在數據庫裏tb_area這個表裏增長一點數據mysql

package wang.beastxw.javao2o.dao;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import wang.beastxw.javao2o.BaseTest;
import wang.beastxw.javao2o.entity.Area;

import java.util.List;

public class AreaDaoTest extends BaseTest {
    @Autowired
    AreaMapper areaMapper;

    @Test
    public void TestQueryAreaList() {
        List<Area> areaList = areaMapper.queryAreaList();
    }
}

4.點擊debug 看數據是否是和數據庫裏一致

3.源碼

uri: https://github.com/Hericium/j...
分支: feature/startmvcgit

4.添加羣聊一塊兒學習(698615299)!

相關文章
相關標籤/搜索