ssm框架整合筆記-3-mybatis的逆向工程與測試項目


1、mybatis代碼生成器(插件)

1.1 安裝插件

資源准備:
mybatis_generator_1.3.1.zip
generatorConfig.xml

1.1.1 關閉MyEclipse,找到MyEclipse安裝后的目錄,新建文件夾soft/mybatis,如下圖:

image

1.1.2 解壓mybatis_generator_1.3.1.zip文件,並把解壓出的features和pougins文件夾copy到“/soft/mybatis/”文件夾內。如下圖:

image

同時,單獨copy一個mysql驅動jar包,供mybatis代碼生成器插件使用,不要共用項目中使用的驅動。

1.1.3 進入D:\Genuitec\MyEclipse 10\dropins文件夾,新建mybatis.link文件,並在文件內添加如下代碼:

path=D:\\Genuitec\\MyEclipse 10\\dropins\\soft\\mybatis,內容如圖:

image

1.1.4 啟動MyEclipse,如果配置成功,啟動后MyEclipse會彈出個成功的窗口,如下圖。

image

 

1.2 使用插件方法

在項目中添加generatorConfig.xml文件,並修改內容。之后,在項目上鼠標右鍵點擊該文件可看到菜單:generator mybatis artifacts生成。

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="conn.properties" /> -->
    
    <!-- 為生成器指定數據庫連接的驅動 -->
    <classPathEntry
        location="D:\Genuitec\MyEclipse 10\soft\mybatis\mysql-connector-java-5.1.26-bin.jar" />
    <!-- 指定運行環境是mybatis3的版本 -->
    <context id="testTables" targetRuntime="MyBatis3">

        <commentGenerator>
            <!-- 是否取消注釋 -->
            <property name="suppressAllComments" value="true" />
            <!-- 是否生成注釋代時間戳 -->
            <property name="suppressDate" value="true" />
        </commentGenerator>
        <!-- jdbc 連接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/scm?useUnicode=true&amp;characterEncoding=UTF-8"
            userId="root" password="root">
        </jdbcConnection>

        <!-- targetPackage指定模型在生成在哪個包 ,targetProject指定項目的src, -->
        <javaModelGenerator targetPackage="cn.itcast.scm.entity"
            targetProject="scm/src">
            <!-- 去除字段前后空格 ,與javabean的set/get方法有關,不過一般我們現在寫的set/get不存在這種情況,默認false就行 -->
            <property name="trimStrings" value="false" />
        </javaModelGenerator>
        <!-- 配置SQL映射文件生成信息 -->
        <sqlMapGenerator targetPackage="cn.itcast.scm.dao"
            targetProject="scm/src" />
        <!--配置dao接口生成信息 -->
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="cn.itcast.scm.dao" targetProject="scm/src" />

        <!-- 需要生成的數據庫表 提醒:如果某表生成過一次了,下次需要注釋掉(或刪掉), 因為該生成器沒有那么智能,會重復生成屬性和set/get -->
        <table tableName="account" domainObjectName="Account" />

        <table tableName="supplier" domainObjectName="Supplier" />
    </context>
</generatorConfiguration>

2、准備數據庫和表

drop database if exists scm;

create database scm default character set utf8;

use scm;

drop table if exists supplier;


/*============================*/
/* Table: 管理員表結構           */
/*============================*/
create table account
(
   /* 管理員編號,自動增長 */
   acc_id                  int not null auto_increment,
   /* 管理員登錄名  */
   acc_login               varchar(20),
   /* 管理員姓名  */
   acc_name                varchar(20),
   /* 管理員密碼 */
   acc_pass                varchar(20),
   /* 設置編號為主鍵 */
   primary key (acc_id)
);

/*==============================================================*/
/* Table: 供應商表                                            */
/*==============================================================*/

create table supplier
(
   sup_id               int not null auto_increment,
   sup_name             varchar(20),
   sup_linkman          varchar(20),
   sup_phone            varchar(11),
   sup_address          varchar(100),
   sup_remark           varchar(200),
   primary key (sup_id)
);

/* 添加供應商數據, */
insert into account (acc_login,acc_pass) values ('admin','admin');
insert into account (acc_login,acc_pass) values ('admin2','admin2');
/* 添加供應商數據, */
insert into supplier (sup_name,sup_linkman,sup_phone,sup_address,sup_remark) values ('蘋果供應商','小張','12388888887','廣州花都','普通供應商');
insert into supplier (sup_name,sup_linkman,sup_phone,sup_address,sup_remark) values ('三星供應商','小王','12388888888','廣州增城','普通供應商');
insert into supplier (sup_name,sup_linkman,sup_phone,sup_address,sup_remark) values ('華為供應商','小王','12388888889','廣東深圳','一級供應商');


select * from account;
select * from supplier;

 

3、開始生成代碼

3.1 生成后的項目代碼,Entity部分包含一些我們沒用的信息,可以刪除掉,只留下我們需要的。

生成成功,生成后截圖:image

刪掉AccountExample.java和SupplierExample.java,之后如下圖

image

 

3.2 在dao接口和Mapper.xml文件中,生成器為我們生成了很多方法。可自行調整。

4、測試scm項目

4.1 這里 ,為了測試,我們自己重新編寫一些簡單的dao接口方法,並修改Mapper.xml映射文件,

同時也可以為生成的實體實現序列化,並添加toString方法,方便測試。(下面以Account為例)

4.1.1 修改AccountMapper.java

package cn.itcast.scm.dao;

import cn.itcast.scm.entity.Account;

public interface AccountMapper {
    int insertAccount(Account record);
}

4.1.2修改AccountMapper.xml

<?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="cn.itcast.scm.dao.AccountMapper" >
  <resultMap id="accountResultMap" type="cn.itcast.scm.entity.Account" >
    <id column="acc_id" property="accId" jdbcType="INTEGER" />
    <result column="acc_login" property="accLogin" jdbcType="VARCHAR" />
    <result column="acc_name" property="accName" jdbcType="VARCHAR" />
    <result column="acc_pass" property="accPass" jdbcType="VARCHAR" />
  </resultMap>
  
  <insert id="insert" parameterType="cn.itcast.scm.entity.Account" >
    insert into account (acc_name) values (#{accName})
  </insert>
   
</mapper>

4.1.3 修改生成的實體類Account

package cn.itcast.scm.entity;

import java.io.Serializable;

public class Account implements Serializable {

    private static final long serialVersionUID = -649693483437792411L;

    private Integer accId;
    private String accLogin;

    private String accName;

    private String accPass;

    //此處省略了setter/getter方法,自行補上
    ...
    
    @Override
    public String toString() {
        return "Account [accId=" + accId + ", accLogin=" + accLogin
                + ", accName=" + accName + ", accPass=" + accPass + "]";
    }
    

}

 

4.2 添加Service接口和實現類,添加控制器類。

4.2.1 AccountService.java

package cn.itcast.scm.service;
import cn.itcast.scm.entity.Account;

public interface AccountService {
    public int insertAccount(Account account) throws Exception;
}

4.2.2 AccountServiceImpl.java

package cn.itcast.scm.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.itcast.scm.dao.AccountMapper;
import cn.itcast.scm.entity.Account;
import cn.itcast.scm.service.AccountService;

@Service
public class AccountServiceImpl implements AccountService{
    @Autowired
    AccountMapper accountMapper;
    @Override
    public int insertAccount(Account account) throws Exception {
        return accountMapper.insertAccount(account);
    }
}
4.2.3 AccountAction.java
package cn.itcast.scm.action;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.itcast.scm.entity.Account;
import cn.itcast.scm.service.AccountService;


@Controller
@RequestMapping(value = "/account")
public class DeptAction {
    @Resource
    private AccountService accountService;


    @RequestMapping(value = "/insert")
    public String insert(Account account) {
        try {
            System.out.println("---action.account:" + account);
            accountService.insertAccount(account);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "forward:/jsp/main.jsp";
    }

}

4.2.4、修改index.jsp,用以測試插入記錄

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
</head>
<body>
    <form action="account/insert.action" method="post">
        管理員名稱:<input type="text" name="accName"><br> 
        <input type="submit" value="ok">
    </form>
</body>
</html>

 

5、測試插入數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM