你的位置:首页 > Java教程

[Java教程]ssm框架整合笔记


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

1.1 安装插件

资源准备:
mybatis_generator_1.3.1.zip
generatorConfig.

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.

generatorConfig.

<??><!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="      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.

4、测试scm项目

4.1 这里 ,为了测试,我们自己重新编写一些简单的dao接口方法,并修改Mapper.

同时也可以为生成的实体实现序列化,并添加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.

<??><!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;@Servicepublic 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、测试插入数据。