使用MyBatis Generator自动创建表对应的dao层接口、模型层对象、sql语句的xml文件

最近看了其他人使用利用MyBatis Generator的过程

越发感觉到需要将细节更加细化让,实现的过程更加清楚、明白!


咳咳。。话说我分用完了。那么老爷们,如果看着我这个弄出来了麻烦帮我弄点分。。


1.首先先上图,直观的展示所需的材料内容:


图中所需材料:

①src文件是用来存放生成的信息的。

由于无法指定src的位置,所以只能将src文件默认放在和jar包、配置文件相同目录下

②generatorConfig.xml是用于设置表生成的dao层接口、模型层类、以及sql对应的映射xml文件所需的文件


文件的内容如下:

注意如果用的不通的数据库,那么换换jar、和数据库连接信息即可.

<?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>    
	<!-- 指定一个所用的数据库jar包 -->
    <classPathEntry  location="ojdbc14.jar"/>    
    <context id="DB2Tables"  targetRuntime="MyBatis3">    
        <commentGenerator>    
            <property name="suppressDate" value="true"/>    
            <property name="suppressAllComments" value="true"/>    
        </commentGenerator>
        <!-- 数据库连接信息 -->    
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@192.168.7.75:1521:orcl" userId="posp" password="jlposp">    
        </jdbcConnection>    
        <!-- 是否进行字母大小模糊 -->
        <javaTypeResolver>    
            <property name="forceBigDecimals" value="false"/>    
        </javaTypeResolver> 
        <!-- 根据对应的表中信息,将生成对应的模型层对象, -->
        <javaModelGenerator targetPackage="com.ssm.model" targetProject="src">    
            <property name="enableSubPackages" value="true"/>    
            <property name="trimStrings" value="true"/>    
        </javaModelGenerator>    
        <!-- 根据模型层属性内容,生成几个默认的CURD的sql映射文件 -->
        <sqlMapGenerator targetPackage="com.ssm.mapping" targetProject="src">    
            <property name="enableSubPackages" value="true"/>    
        </sqlMapGenerator>    
        <!-- 根据模型层属性内容,生成几个默认的CURD接口 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.ssm.dao" targetProject="src">    
            <property name="enableSubPackages" value="true"/>    
        </javaClientGenerator> 
        <!-- 指定一个需要进行关系映射,自动生产对应模型层、dao层接口、sql映射文件的表
        	 tableName是表的名称
        	 domainObjectName是生成的模型层对象名称
         -->   
        <table tableName="user_info_t" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>  
    </context>    
</generatorConfiguration>    
③就是mybatis-generator-core-1.3.2.jar与ojdbc14.jar的jar包了。


2.有了对应的资料、文件之后

①.打开该处的上级目录.Shift+右键打开,命令窗口      或者 进入运行,输入cmd,一级一级进入到当前文件夹


咳咳,发现Shift+右键之后一时之间不知道咋截图,用手机拍的 - -!

囧。不要在意这些细节。


②.确保当前文件夹存在指定的 


generatorConfig.xml配置文件
mybatis-generator-core-1.3.2.jar jar包
ojdbc14.jar 数据库jar包
以及生成的例子存放的文件夹,我这里选择文件夹是 src


③.在命令窗口输入


java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
执行脚本动作


当出现提示:

Mybatis Generator finished successfull.之后恭喜

你成功了。


如果出现不适这个 - -,那么显然报错了。

报错了一般解决呢?

看看说的啥呗?

看不懂咋办?各种翻译、百度翻译什么的你值得尝试


例如我上面失败的那次就是 放好了文件之后没放 src文件夹、、、



3.检查成果

我们获取到三个宝贝。

其实这些不用解释自己看看内容也就知道了的。

①UserMapper.java

其实是一个dao层的接口

当然为了更加正规 建议改名成IUserDao.java

package com.ssm.dao;

import com.ssm.model.User;

public interface UserMapper {
    int deleteByPrimaryKey(Long id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}
你会说为啥没dao层实现类即 UserDaoImpl.java

亲。囧实现类可能还需要写一些判断条件。

当然是自己写才好点。

②UserMapper.xml

这个就是sql语句对应的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" >
<!-- 1.给这个文件里面的内容取了一个名字叫做com.ssm.dao.UserMapper -->
<mapper namespace="com.ssm.dao.UserMapper" >

<!-- 2.这是将属性封装到一个map集合中方便使用 -->
  <resultMap id="BaseResultMap" type="com.ssm.model.User" >
    <id column="ID" property="id" jdbcType="DECIMAL" />
    <result column="USERNAME" property="username" jdbcType="VARCHAR" />
    <result column="PASSWORD" property="password" jdbcType="VARCHAR" />
  </resultMap>
  <!-- 3.这只是制作一个方便的sql语句,可以方便的放在下面的 具体存储过程中 -->
  <sql id="Base_Column_List" >
    ID, USERNAME, PASSWORD
  </sql>
  
  <!-- 4.这是一个查询,根据id来查 -->
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
    select 
    <include refid="Base_Column_List" />
    from USER_INFO_T
    where ID = #{id,jdbcType=DECIMAL}
  </select>
  <!-- 5.这是一个删除,根据id删除 -->
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
    delete from USER_INFO_T
    where ID = #{id,jdbcType=DECIMAL}
  </delete>
  <!-- 6.这是一个增加,com.ssm.model.User是 指定模型对象,你也可以在合适的地方
  
  
  	例如mybatis-context.xml还是mybatis.xml配置文件中
  	定义类型别名
	<typeAliases>
		<typeAlias alias="hello" type="com.ssm.model.Hello" />
	</typeAliases> 
	
	但是自动生成都帮你弄好了,也就别作了= = !
	
	咳咳,这就是一个增加
   -->
  <insert id="insert" parameterType="com.ssm.model.User" >
    insert into USER_INFO_T (ID, USERNAME, PASSWORD
      )
    values (#{id,jdbcType=DECIMAL}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}
      )
      
   <!-- 7.这个增加进行了对象属性值非空判断 -->
  </insert>
  <insert id="insertSelective" parameterType="com.ssm.model.User" >
    insert into USER_INFO_T
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        ID,
      </if>
      <if test="username != null" >
        USERNAME,
      </if>
      <if test="password != null" >
        PASSWORD,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=DECIMAL},
      </if>
      <if test="username != null" >
        #{username,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        #{password,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <!-- 8.这个修改进行了对象属性值非空判断 -->
  <update id="updateByPrimaryKeySelective" parameterType="com.ssm.model.User" >
    update USER_INFO_T
    <set >
      <if test="username != null" >
        USERNAME = #{username,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        PASSWORD = #{password,jdbcType=VARCHAR},
      </if>
    </set>
    where ID = #{id,jdbcType=DECIMAL}
  </update>
  <!-- 9.这个是个修改 -->
  <update id="updateByPrimaryKey" parameterType="com.ssm.model.User" >
    update USER_INFO_T
    set USERNAME = #{username,jdbcType=VARCHAR},
      PASSWORD = #{password,jdbcType=VARCHAR}
    where ID = #{id,jdbcType=DECIMAL}
  </update>
</mapper>
③User.java

咳咳。。。。。。。。。这个就免了解释了吧?

package com.ssm.model;

public class User {
    private Long id;

    private String username;

    private String password;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username == null ? null : username.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }
}


你看,说完了。

观众老爷们,我没分学习其他内容了。囧帮帮忙呗~


囧获取到的内容需要进行一定完善例如 模型层得弄个toString方法这样的才靠谱吧。


大家帮忙瞅瞅,有不有说错的、或者说的不好的、嗯我知错才能改~






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值