zoukankan      html  css  js  c++  java
  • 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:GenuitecMyEclipse 10dropins文件夹,新建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:GenuitecMyEclipse 10softmybatismysql-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、测试插入数据。

  • 相关阅读:
    按照鬼哥学so变化,四,第一章的例子
    浏览器发送总共下载文件2第二个请求,如何“下载”仅仅记录1次要?
    hdu 3371 Connect the Cities
    自己写RTPserver——大约RTP协议
    cocos2d-x3.2中将XCode发展project转移到VS2010可能会发生错误
    apache kafkac系列lient发展-java
    大约++和--了解运营商
    socket计划——一个简单的例子
    PhotoShop基本工具 -- 移动工具
    ZA7783:MIPI转LVDS/MIPI转RGB888/RGB转LVDS
  • 原文地址:https://www.cnblogs.com/zzfon/p/5245478.html
Copyright © 2011-2022 走看看