最近看了其他人使用利用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方法这样的才靠谱吧。
大家帮忙瞅瞅,有不有说错的、或者说的不好的、嗯我知错才能改~