精华内容
下载资源
问答
  • Mybatis自动生成实体类

    2015-04-20 15:36:28
    Mybatis自动生成实体类,XML文件
  • mybatis自动生成实体类

    2017-06-20 09:47:54
    mybatis对数据库进行逆向生成实体类和mapper
  • mybatis自动生成实体类及实体类映射文件,mybatis自动生成实体类及实体类映射文件
  • 1. 根据mybatis生成实体类(带注释) importjava.io.BufferedWriter; importjava.io.File; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.OutputStreamWriter; importjava.sql....

     1. 根据mybatis 表生成实体类(带注释)

    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
     
    /**
     *  自动生成MyBatis的实体类、实体映射XML文件、Mapper
     *
     */
    @SuppressWarnings("hiding")
    public class myEntityUtil {
     
        /**
         **********************************使用前必读*******************
         **
         ** 使用前请将moduleName更改为自己模块的名称即可(一般情况下与数据库名一致),其他无须改动。
         **
         ***********************************************************
         */
     
        private final String type_char = "char";
        
        private final String type_varchar = "varchar";
     
        private final String type_date = "date";
     
        private final String type_timestamp = "timestamp";
     
        private final String type_int = "int";
        
        private final String type_float = "float";
        
        private final String type_double = "double";
     
        private final String type_bigint = "bigint";
     
        private final String type_text = "text";
     
        private final String type_bit = "bit";
     
        private final String type_decimal = "decimal";
     
        private final String type_blob = "blob";
     
     
        private final String moduleName = "jianzhan"; // 对应模块名称(根据自己模块做相应调整!!!务必修改^_^)
     
        private final String bean_path = "d:/entity_bean";
     
        private final String mapper_path = "d:/entity_mapper";
     
        private final String xml_path = "d:/entity_mapper/xml";
     
        private final String bean_package = "bean";
     
        private final String mapper_package = "com.skycc.mapper.jianzhan";
     
     
        private final String driverName = "com.mysql.jdbc.Driver";
     
        private final String user = "root";
     
        private final String password = "root";
     
        private final String url = "jdbc:mysql://192.168.1.197:3306/" + moduleName + "?characterEncoding=gbk";
     
        private String tableName = null;
     
        private String beanName = null;
     
        private String mapperName = null;
     
        private Connection conn = null;
     
     
        private void init() throws ClassNotFoundException, SQLException {
            Class.forName(driverName);
            conn = DriverManager.getConnection(url, user, password);
        }
     
     
        /**
         *  获取所有的表
         *
         * @return
         * @throws SQLException 
         */
        private List<String> getTables() throws SQLException {
            List<String> tables = new ArrayList<String>();
            PreparedStatement pstate = conn.prepareStatement("show tables");
            ResultSet results = pstate.executeQuery();
            while ( results.next() ) {
                String tableName = results.getString(1);
                //          if ( tableName.toLowerCase().startsWith("yy_") ) {
                tables.add(tableName);
                //          }
            }
            return tables;
        }
     
     
        private void processTable( String table ) {
            StringBuffer sb = new StringBuffer(table.length());
            String tableNew = table.toLowerCase();
            String[] tables = tableNew.split("_");
            String temp = null;
            for ( int i = 1 ; i < tables.length ; i++ ) {
                temp = tables[i].trim();
                sb.append(temp.substring(0, 1).toUpperCase()).append(temp.substring(1));
            }
            beanName = sb.toString();
            mapperName = beanName + "Mapper";
        }
     
     
        private String processType( String type ) {
            if ( type.indexOf(type_char) > -1 ) {
                return "VARCHAR";
            } else if ( type.indexOf(type_bigint) > -1 ) {
                return "Long".toUpperCase();
            } else if ( type.indexOf(type_int) > -1 ) {
                return "Integer".toUpperCase();
            }else if ( type.indexOf(type_float) > -1 ) {
                return "Float".toUpperCase();
            }else if ( type.indexOf(type_double) > -1 ) {
                return "double".toUpperCase();
            } else if ( type.indexOf(type_date) > -1 ) {
                return "Date".toUpperCase();
            } else if ( type.indexOf(type_text) > -1 ) {
                return "VARCHAR";
            } else if ( type.indexOf(type_varchar) > -1 ) {
                return "VARCHAR";
            } else if ( type.indexOf(type_timestamp) > -1 ) {
                return "Date".toUpperCase();
            } else if ( type.indexOf(type_bit) > -1 ) {
                return "Boolean".toUpperCase();
            } else if ( type.indexOf(type_decimal) > -1 ) {
                return "DECIMAL".toUpperCase();
            } else if ( type.indexOf(type_blob) > -1 ) {
                return "byte[]";
            }
            return null;
        }
        private String BeanprocessType( String type ) {
            if ( type.indexOf(type_char) > -1 ) {
                return "String";
            } else if ( type.indexOf(type_bigint) > -1 ) {
                return "Long";
            } else if ( type.indexOf(type_int) > -1 ) {
                return "Integer";
            }else if ( type.indexOf(type_float) > -1 ) {
                return "Float";
            }else if ( type.indexOf(type_double) > -1 ) {
                return "Double";
            } else if ( type.indexOf(type_date) > -1 ) {
                return "java.util.Date";
            } else if ( type.indexOf(type_text) > -1 ) {
                return "String";
            } else if ( type.indexOf(type_varchar) > -1 ) {
                return "String";
            } else if ( type.indexOf(type_timestamp) > -1 ) {
                return "java.util.Date";
            } else if ( type.indexOf(type_bit) > -1 ) {
                return "Boolean";
            } else if ( type.indexOf(type_decimal) > -1 ) {
                return "Double";
            } else if ( type.indexOf(type_blob) > -1 ) {
                return "byte[]";
            }
            return null;
        }
     
        private String processField( String field ) {
            StringBuffer sb = new StringBuffer(field.length());
            //field = field.toLowerCase();
            String[] fields = field.split("_");
            String temp = null;
            sb.append(fields[0]);
            for ( int i = 1 ; i < fields.length ; i++ ) {
                temp = fields[i].trim();
                sb.append(temp.substring(0, 1).toUpperCase()).append(temp.substring(1));
            }
            return sb.toString();
        }
     
     
        /**
         *  将实体类名首字母改为小写
         *
         * @param beanName
         * @return 
         */
        private String processResultMapId( String beanName ) {
            return beanName.substring(0, 1).toLowerCase() + beanName.substring(1);
        }
     
     
        /**
         *  构建类上面的注释
         *
         * @param bw
         * @param text
         * @return
         * @throws IOException 
         */
        private BufferedWriter buildClassComment( BufferedWriter bw, String text ) throws IOException {
            bw.newLine();
            bw.newLine();
            bw.write("/**");
            bw.newLine();
            bw.write(" * ");
            bw.newLine();
            bw.write(" * " + text);
            bw.newLine();
            bw.write(" * ");
            bw.newLine();
            bw.write(" **/");
            return bw;
        }
     
     
        /**
         *  构建方法上面的注释
         *
         * @param bw
         * @param text
         * @return
         * @throws IOException 
         */
        private BufferedWriter buildMethodComment( BufferedWriter bw, String text ) throws IOException {
            bw.newLine();
            bw.write("\t/**");
            bw.newLine();
            bw.write("\t * ");
            bw.newLine();
            bw.write("\t * " + text);
            bw.newLine();
            bw.write("\t * ");
            bw.newLine();
            bw.write("\t **/");
            return bw;
        }
     
     
        /**
         *  生成实体类
         *
         * @param columns
         * @param types
         * @param comments
         * @throws IOException 
         */
        private void buildEntityBean( List<String> columns, List<String> types, List<String> comments, String tableComment )
            throws IOException {
            File folder = new File(bean_path);
            if ( !folder.exists() ) {
                folder.mkdir();
            }
     
            File beanFile = new File(bean_path, beanName + ".java");
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(beanFile)));
            bw.write("package " + bean_package + ";");
            bw.newLine();
            bw.write("import java.io.Serializable;");
            bw.newLine();
            bw.write("import com.skycc.core.entity.BasicEntity;");
            bw.newLine();
            //bw.write("import lombok.Data;");
            //      bw.write("import javax.persistence.Entity;");
            bw = buildClassComment(bw, tableComment);
            bw.newLine();
            bw.write("@SuppressWarnings(\"serial\")");
            bw.newLine();
            //      bw.write("@Entity");
            //bw.write("@Data");
            //bw.newLine();
            bw.write("public class " + beanName + " implements BasicEntity,Serializable {");
            bw.newLine();
            bw.newLine();
            int size = columns.size();
            for ( int i = 0 ; i < size ; i++ ) {
                bw.write("\t/**" + comments.get(i) + "**/");
                bw.newLine();
                bw.write("\tprivate " + BeanprocessType(types.get(i)) + " " + processField(columns.get(i)) + ";");
                bw.newLine();
                bw.newLine();
            }
            bw.newLine();
            // 生成get 和 set方法
            String tempField = null;
            String _tempField = null;
            String tempType = null;
            for ( int i = 0 ; i < size ; i++ ) {
                tempType = BeanprocessType(types.get(i));
                _tempField = processField(columns.get(i));
                tempField = _tempField.substring(0, 1).toUpperCase() + _tempField.substring(1);
                bw.newLine();
                //          bw.write("\tpublic void set" + tempField + "(" + tempType + " _" + _tempField + "){");
                bw.write("\tpublic void set" + tempField + "(" + tempType + " " + _tempField + "){");
                bw.newLine();
                //          bw.write("\t\tthis." + _tempField + "=_" + _tempField + ";");
                bw.write("\t\tthis." + _tempField + " = " + _tempField + ";");
                bw.newLine();
                bw.write("\t}");
                bw.newLine();
                bw.newLine();
                bw.write("\tpublic " + tempType + " get" + tempField + "(){");
                bw.newLine();
                bw.write("\t\treturn this." + _tempField + ";");
                bw.newLine();
                bw.write("\t}");
                bw.newLine();
            }
    //        bw.write("\tpublic String getId() {");
    //        bw.write("\treturn null;");
    //        bw.write("}");
    //        bw.newLine();
    //        bw.write("public void setId(String id) {");
    //        bw.write("}");
            bw.newLine();
            bw.write("}");
            bw.newLine();
            bw.flush();
            bw.close();
        }
     
     
        /**
         *  构建Mapper文件
         *
         * @throws IOException 
         */
        private void buildMapper() throws IOException {
            File folder = new File(mapper_path);
            if ( !folder.exists() ) {
                folder.mkdirs();
            }
     
            File mapperFile = new File(mapper_path, mapperName + ".java");
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(mapperFile), "utf-8"));
            bw.write("package " + mapper_package + ";");
            bw.newLine();
            bw.newLine();
            bw.write("import " + bean_package + "." + beanName + ";");
            bw.newLine();
            bw.write("import com.skycc.core.dao.BaseDao;");
            bw.newLine();
            bw.write("import org.apache.ibatis.annotations.Param;");
            bw = buildClassComment(bw, mapperName + "数据库操作接口类");
            bw.newLine();
            bw.newLine();
            //      bw.write("public interface " + mapperName + " extends " + mapper_extends + "<" + beanName + "> {");
            bw.write("public interface " + mapperName + " extends BaseDao{");
            bw.newLine();
    //        bw.newLine();
    //        // ----------定义Mapper中的方法Begin----------
    //        bw = buildMethodComment(bw, "查询(根据主键ID查询)");
    //        bw.newLine();
    //        bw.write("\t" + beanName + "  selectByPrimaryKey ( @Param(\"id\") Long id );");
    //        bw.newLine();
    //        bw = buildMethodComment(bw, "删除(根据主键ID删除)");
    //        bw.newLine();
    //        bw.write("\t" + "int deleteByPrimaryKey ( @Param(\"id\") Long id );");
    //        bw.newLine();
    //        bw = buildMethodComment(bw, "添加");
    //        bw.newLine();
    //        bw.write("\t" + "int insert( " + beanName + " record );");
    //        bw.newLine();
    //        bw = buildMethodComment(bw, "添加 (匹配有值的字段)");
    //        bw.newLine();
    //        bw.write("\t" + "int insertSelective( " + beanName + " record );");
    //        bw.newLine();
    //        bw = buildMethodComment(bw, "修改 (匹配有值的字段)");
    //        bw.newLine();
    //        bw.write("\t" + "int updateByPrimaryKeySelective( " + beanName + " record );");
    //        bw.newLine();
    //        bw = buildMethodComment(bw, "修改(根据主键ID修改)");
    //        bw.newLine();
    //        bw.write("\t" + "int updateByPrimaryKey ( " + beanName + " record );");
            bw.newLine();
     
            // ----------定义Mapper中的方法End----------
            bw.newLine();
            bw.write("}");
            bw.flush();
            bw.close();
        }
     
     
        /**
         *  构建实体类映射XML文件
         *
         * @param columns
         * @param types
         * @param comments
         * @throws IOException 
         */
        private void buildMapperXml( List<String> columns, List<String> types, List<String> comments ) throws IOException {
            File folder = new File(xml_path);
            if ( !folder.exists() ) {
                folder.mkdirs();
            }
     
            File mapperXmlFile = new File(xml_path, mapperName + ".xml");
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(mapperXmlFile)));
            bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
            bw.newLine();
            bw.write("<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" ");
            bw.newLine();
            bw.write("    \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">");
            bw.newLine();
            bw.write("<mapper namespace=\"" + mapper_package + "." + mapperName + "\">");
            bw.newLine();
            bw.newLine();
     
            /*bw.write("\t<!--实体映射-->");
            bw.newLine();
            bw.write("\t<resultMap id=\"" + this.processResultMapId(beanName) + "ResultMap\" type=\"" + beanName + "\">");
            bw.newLine();
            bw.write("\t\t<!--" + comments.get(0) + "-->");
            bw.newLine();
            bw.write("\t\t<id property=\"" + this.processField(columns.get(0)) + "\" column=\"" + columns.get(0) + "\" />");
            bw.newLine();
            int size = columns.size();
            for ( int i = 1 ; i < size ; i++ ) {
                bw.write("\t\t<!--" + comments.get(i) + "-->");
                bw.newLine();
                bw.write("\t\t<result property=\""
                        + this.processField(columns.get(i)) + "\" column=\"" + columns.get(i) + "\" />");
                bw.newLine();
            }
            bw.write("\t</resultMap>");
     
            bw.newLine();
            bw.newLine();
            bw.newLine();*/
     
            // 下面开始写SqlMapper中的方法
            // this.outputSqlMapperMethod(bw, columns, types);
            buildSQL(bw, columns, types);
     
            bw.write("</mapper>");
            bw.flush();
            bw.close();
        }
     
        private void buildSQL( BufferedWriter bw, List<String> columns, List<String> types ) throws IOException {
            int size = columns.size();
            //resultMap
            bw.write("\t<resultMap id=\""+beanName+"ResultMap\" type=\""+bean_package+"."+beanName+"\">");
            for ( int i = 0 ; i < size ; i++ ) {
             if(i==0){
             bw.newLine();
             bw.write("\t<id column=\""+columns.get(i)+"\" property=\""+processField(columns.get(i))+"\" jdbcType=\""+processType(types.get(i))+"\" />");
             bw.newLine();
             }else{
             bw.newLine();
             bw.write("\t<result column=\""+columns.get(i)+"\" property=\""+processField(columns.get(i))+"\" jdbcType=\""+processType(types.get(i))+"\" />");
             bw.newLine();
             }
            }
    bw.write("\t</resultMap>");
    bw.newLine();
    
            // insert
    bw.write("\t<insert id=\"insert\" parameterType=\""+bean_package+"."+beanName+"\">");
    bw.newLine();
    bw.write("\tinsert into "+tableName);
    bw.newLine();
    bw.write("\t<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">");
     for ( int i = 0 ; i < size ; i++ ) {
                 bw.newLine();
             bw.write("\t<if test=\""+processField(columns.get(i))+" != null\">"+columns.get(i)+",</if>");
             bw.newLine();
            }
    bw.write("\t</trim>");
    bw.newLine();
    bw.write("\t<trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">");
    for ( int i = 0 ; i < size ; i++ ) {
    bw.newLine();
           bw.write("\t<if test=\""+processField(columns.get(i))+" != null\">#{"+processField(columns.get(i))+",jdbcType="+processType(types.get(i))+"},</if>");
           bw.newLine();
         }
    bw.write("\t</trim>");
    bw.newLine();
    bw.write("\t</insert>");
            bw.newLine();
            bw.newLine();
     
            
            //update
            bw.write("\t<update id=\"update\" parameterType=\""+bean_package+"."+beanName+"\">");
            bw.newLine();
            bw.write("\tupdate "+tableName);
            bw.newLine();
            bw.write("\t<set>");
            for ( int i = 1 ; i < size ; i++ ) {
             bw.newLine();
             bw.write("\t<if test=\""+processField(columns.get(i))+" != null\">"+columns.get(i)+" = #{"+processField(columns.get(i))+",jdbcType="+processType(types.get(i))+"},</if>");
             bw.newLine();
            }
       bw.write("\t</set>");
       bw.newLine();
       bw.write("\twhere "+columns.get(0)+" = #{"+processField(columns.get(0))+",jdbcType="+processType(types.get(0))+"}");
       bw.newLine();
       bw.write("\t</update>");
       bw.newLine();
           bw.newLine();
           
           //删除根据实体
    //       <delete id="deleteByEntity"  parameterType="map">
    //    delete from  t_sys_label
    //    <include refid="whereSearch" />
    //    </delete>
           bw.write("\t<delete id=\"deleteByEntity\" parameterType=\"map\">");
           bw.newLine();
           bw.write("\tdelete from  "+tableName);
           bw.newLine();
           bw.write("\t<include refid=\"whereSearch\" />");
           bw.newLine();
           bw.write("\t</delete>");
           bw.newLine();
           bw.newLine();
           
           //detele
           
           bw.write("\t<delete id=\"deleteById\" parameterType=\"java.lang.String\">");
           bw.newLine();
           bw.write("\tdelete from  "+tableName);
           bw.newLine();
           bw.write("\twhere "+columns.get(0)+" = #{"+processField(columns.get(0))+",jdbcType="+processType(types.get(0))+"}");
           bw.newLine();
           bw.write("\t</delete>");
           bw.newLine();
           bw.newLine();
           
           //totalByEntity
           bw.write("\t<select id=\"totalByEntity\" resultType=\"int\" parameterType=\"int\">");
           bw.newLine();
           bw.write("\tselect count(*) from "+tableName);
           bw.newLine();
           bw.write("\t<include refid=\"whereSearch\" />");
           bw.newLine();
           bw.write("\t</select>");
           bw.newLine();
           bw.newLine();
           //分页查询
    //       <select id="selectByPage" resultMap="SysLabelResultMap">
    //    select * from  t_sys_label
    //    <include refid="whereSearch" />
    //    <if test="null != searchKeyWords and '' != searchKeyWords">
    //    and (f_lbName  LIKE '%${searchKeyWords}%' or fLbContent LIKE '%${searchKeyWords}%') 
    //    </if>
    //    LIMIT #{startNumber},#{endNumber} 
    //    </select>
           bw.write("\t<select id=\"selectByPage\" resultMap=\""+beanName+"ResultMap\">");
           bw.newLine();
           bw.write("\tselect * from "+tableName);
           bw.newLine();
           bw.write("\t<include refid=\"whereSearch\" />");
           bw.newLine();
           bw.write("\tLIMIT #{startNumber},#{endNumber}");
           bw.newLine();
           bw.write("\t</select>");
           bw.newLine();
           bw.newLine();
           //selectById
           bw.write("\t<select id=\"selectById\" resultMap=\""+beanName+"ResultMap\">");
           bw.newLine();
           bw.write("\tselect * from  "+tableName);
           bw.newLine();
           bw.write("\twhere "+columns.get(0)+" = #{"+processField(columns.get(0))+",jdbcType=VARCHAR}");
           bw.newLine();
           bw.write("\t</select>");
           bw.newLine();
           bw.newLine();
           //selectByEntity
           bw.write("\t<select id=\"selectByEntity\" resultMap=\""+beanName+"ResultMap\" parameterType=\"int\">");
           bw.newLine();
           bw.write("\tselect * from "+tableName);
           bw.newLine();
           bw.write("\t<include refid=\"whereSearch\" />");
           bw.newLine();
           bw.write("\t</select>");
           bw.newLine();
           bw.newLine();
           //whereSearch
           bw.write("\t<sql id=\"whereSearch\">");
           bw.newLine();
           bw.write("\t<where>");
    //       bw.write("\t<if test=\"null != id and '' != id\">");
    //       bw.write("\tid = #{id,jdbcType=VARCHAR}");
    //       bw.write("\t</if>");
           for ( int i = 0 ; i < size ; i++ ) {
           bw.write("\t<if test=\"null != "+processField(columns.get(i))+" and '' != "+processField(columns.get(i))+"\">");
           bw.newLine();
           bw.write("\tand "+columns.get(i)+" = #{"+processField(columns.get(i))+",jdbcType="+processType(types.get(i))+"}");
           bw.newLine();
           bw.write("\t</if>");
           bw.newLine();
           }
           bw.write("\t</where>");
           bw.newLine();
           bw.write("\t</sql>");
           bw.newLine();
           bw.newLine();
     }
     
        /**
         *  获取所有的数据库表注释
         *
         * @return
         * @throws SQLException 
         */
        private Map<String, String> getTableComment() throws SQLException {
            Map<String, String> maps = new HashMap<String, String>();
            PreparedStatement pstate = conn.prepareStatement("show table status");
            ResultSet results = pstate.executeQuery();
            while ( results.next() ) {
                String tableName = results.getString("NAME");
                String comment = results.getString("COMMENT");
                maps.put(tableName, comment);
            }
            return maps;
        }
     
     
        public void generate() throws ClassNotFoundException, SQLException, IOException {
            init();
            String prefix = "show full fields from ";
            List<String> columns = null;
            List<String> types = null;
            List<String> comments = null;
            PreparedStatement pstate = null;
            List<String> tables = getTables();
            Map<String, String> tableComments = getTableComment();
            for ( String table : tables ) {
                columns = new ArrayList<String>();
                types = new ArrayList<String>();
                comments = new ArrayList<String>();
                pstate = conn.prepareStatement(prefix + table);
                ResultSet results = pstate.executeQuery();
                while ( results.next() ) {
                    columns.add(results.getString("FIELD"));
                    types.add(results.getString("TYPE"));
                    comments.add(results.getString("COMMENT"));
                }
                tableName = table;
                processTable(table);
                //          this.outputBaseBean();
                String tableComment = tableComments.get(tableName);
                buildEntityBean(columns, types, comments, tableComment);
                buildMapper();
                buildMapperXml(columns, types, comments);
            }
            conn.close();
        }
     
     
        public static void main( String[] args ) {
            try {
                new myEntityUtil().generate();
                // 自动打开生成文件的目录
                Runtime.getRuntime().exec("cmd /c start explorer D:\\");
            } catch ( ClassNotFoundException e ) {
                e.printStackTrace();
            } catch ( SQLException e ) {
                e.printStackTrace();
            } catch ( IOException e ) {
                e.printStackTrace();
            }
        }
    }

     

    展开全文
  • mybatis自动生成实体类映射,建立好数据库后,修改好映射关系,既可以自动生成实体类和xml文件
  • java_mybatis自动生成实体类
  • mybatis 自动生成实体类dao
  • mybatis自动生成实体类,使用方法 修改generatorConfig中数据库连接 cmd打开运行窗口 cd /d D:\workspace java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
  • Mybatis自动生成实体类以及Mapper文件,非常方便,将一些参数修改好后,运行MybatisGeneratorUtil的main方法,即可自动生成
  • mybatis自动生成实体类和配制文件,使用教程请百度。很简单的。
  • MyBatis自动生成实体类

    千次阅读 2016-03-23 11:45:44
    mybatis-generator-core-1.3.2.jar mysql-connector-java-5.0.4.jar 第一步:编写一个MybatisGeneratorUtil package com.test.utils; import java.io.File; import java.io.IOException; import java.sql

    MyBatis+MySQL生成实体类

    需要的工具jar包

    mybatis-generator-core-1.3.2.jar

    mysql-connector-java-5.0.4.jar

    第一步:编写一个MybatisGeneratorUtil类

    package com.test.utils;
    import java.io.File;  
    import java.io.IOException;  
    import java.sql.SQLException;  
    import java.util.ArrayList;  
    import java.util.List;  
      
    import org.mybatis.generator.api.MyBatisGenerator;  
    import org.mybatis.generator.config.Configuration;  
    import org.mybatis.generator.config.xml.ConfigurationParser;  
    import org.mybatis.generator.exception.InvalidConfigurationException;  
    import org.mybatis.generator.exception.XMLParserException;  
    import org.mybatis.generator.internal.DefaultShellCallback;  
      
    public class MybatisGeneratorUtil {  
      
        public static void main(String[] args) {  
            try {  
                System.out.println("start generator ...");  
                List<String> warnings = new ArrayList<String>();  
                boolean overwrite = true;  
                File configFile = new File(MybatisGeneratorUtil.class.getResource("/generator.xml").getFile());  
                ConfigurationParser cp = new ConfigurationParser(warnings);  
                Configuration config = cp.parseConfiguration(configFile);  
                DefaultShellCallback callback = new DefaultShellCallback(overwrite);  
                MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);  
                myBatisGenerator.generate(null);  
                System.out.println("end generator!");  
            } catch (IOException e) {  
                e.printStackTrace();  
            } catch (XMLParserException e) {  
                e.printStackTrace();  
            } catch (InvalidConfigurationException e) {  
                e.printStackTrace();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }  
        }  
          
    }
    第二步:编写一个generator.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>  
      <classPathEntry location="D:\mysql-connector-java-5.0.4.jar" />  
      
      <context id="Mysql2Tables" targetRuntime="MyBatis3">  
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"  
            connectionURL="jdbc:mysql://localhost:3306/datebase"  
            userId="root"  
            password="root">  
        </jdbcConnection>  
      
        <javaTypeResolver >  
          <property name="forceBigDecimals" value="false" />  
        </javaTypeResolver>  
      
        <javaModelGenerator targetPackage="com.test.model" targetProject="src">  
          <property name="enableSubPackages" value="true" />  
          <property name="trimStrings" value="true" />  
        </javaModelGenerator>  
      
        <sqlMapGenerator targetPackage="com.test.mapper"  targetProject="src">  
          <property name="enableSubPackages" value="true" />  
        </sqlMapGenerator>  
      
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.test.dao"  targetProject="src">  
          <property name="enableSubPackages" value="true" />  
        </javaClientGenerator>  
        <table schema="test" tableName="t_student" domainObjectName="Tstudent" enableCountByExample="false" enableUpdateByExample="false"  
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">  
        </table>  
        <table schema="test" tableName="t_class" domainObjectName="Tclass" enableCountByExample="false" enableUpdateByExample="false"  
           enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">  
       </table>  
       <table schema="test" tableName="t_stu_class" domainObjectName="Tstclass" enableCountByExample="false" enableUpdateByExample="false"  
           enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">  
       </table>
      </context>  
    </generatorConfiguration>
    其中<table>中的tableName代表数据库中的表名、domainObjectName表示你要生成的实体类的名字;

    <classPathEntry>中的location代表你的mysql-connector-java-5.0.4.jar地址;

    targetPackage便是你要生成的文件的路径.

    生成之后就是这样子


    展开全文
  • 本人手写mybatis自动生成实体类代码,使用比Mybatis Generator自动生成方便得多,只需在项目中运行即可。
  • 自动生成实体类以及XML和Mapper接口(mybatis-generator-gui-0.9.0-1.0.exe)
  • Mybatis自动生成实体类及xml

    千次阅读 2019-06-17 22:33:29
    Mybatis自动生成实体类及xml 如果自己根据表手动生成需要的java文件无疑是非常麻烦的,在公司用的是自己写的一段代码生成,比较复杂,代码量也非常大,这几天刚好做一个boot的小demo,于是把mybatis的generator自动...

    Mybatis自动生成实体类及xml

    如果自己根据表手动生成需要的java文件无疑是非常麻烦的,在公司用的是自己写的一段代码生成,比较复杂,代码量也非常大,这几天刚好做一个boot的小demo,于是把mybatis的generator自动生成工具使用整理记录下

    1.引入jar包-pom.xml

    <dependencies>
    	<!-- ..... -->
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <!-- mysql自动生成实体类-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>
    <dependencies>
    

    2.resources文件夹下增加mybatis-generator.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>
    	<context id="DB2Tables" targetRuntime="MyBatis3Simple">
    		<commentGenerator>
    			<property name="suppressDate" value="true" />                 
    			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
    			<!-- 这个注释是generator的注释。不是建表时手输的,没什么卵用-->
    			<property name="suppressAllComments" value="true" />
    		</commentGenerator>          		
    		<!--数据库链接URL,用户名、密码 -->
    		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
    			connectionURL="jdbc:mysql://localhost:3306/hfanss?characterEncoding=utf-8"
    			userId="root" password="123456">
    		</jdbcConnection>
    		<javaTypeResolver>
    			<property name="forceBigDecimals" value="false" />
    		</javaTypeResolver> 		
    		<!-- 设置Java类生成的位置 -->
    		<javaModelGenerator targetPackage="com.hfanss.blog.VO"
    			targetProject=".\src\main\java">
    			<property name="enableSubPackages" value="true" />
    			<property name="trimStrings" value="true" />
    		</javaModelGenerator> 				
    		<!-- 生成映射文件的包名和位置 ***mapper.xml-->
    		<sqlMapGenerator targetPackage="\spring\sqlMap"
    			targetProject=".\src\main\resources">
    			<property name="enableSubPackages" value="true" />
    		</sqlMapGenerator> 				
    		<!-- 生成DAO的包名和位置 ***mapper.java-->
    		<javaClientGenerator type="XMLMAPPER"
    			targetPackage="com.hfanss.blog.dao" targetProject=".\src\main\java">
    			<property name="enableSubPackages" value="true" />
    		</javaClientGenerator> 		
    		<!-- 所有要生成的表名 -->
    		<table tableName="info"></table>
    		<table tableName="article"></table>
    		<table tableName="comments"></table>
    		<table tableName="links"></table>
    		<table tableName="menus"></table>
    		<table tableName="notice"></table>
    		<table tableName="articleSort"></table>
    	</context>
    </generatorConfiguration>
    

    3.执行、GetAutoEntityAndDao放在src/test/java文件夹下,右键Aun as

    /**
     * 功能描述:自动生成mapper.xml、dao、entity
     * @author: hfanss
     * @date: 2019年6月17日 下午8:25:55 
     */
    public class GetAutoEntityAndDao {
    
    	// 该配置文件放在src\\main\\resources\\该路径下即可
    	public static void main(String[] args) {
    		args = new String[] { "-configfile", "src\\main\\resources\\mybatis-generator.xml", "-overwrite" };
    		ShellRunner.main(args);
    	}
    
    }
    

    问题:实体类没有注释,十分不方便。

    看了下源码。嗯,如果不改源码是不能实现生成自定义注释的。改天有时间再研究下!

    附上项目及文件位置截图

    展开全文
  • Mybatis自动生成实体类和Mapper文件我们在做项目时,少不了用到Mybatis框架,更少不了创建实体类和书写sql语句,当数据库表很多时,手动创建会耗时耗力,做着大量重复性的工作,很让人头疼,下面我将介绍如何配置...

    Mybatis自动生成实体类和Mapper文件

    我们在做项目时,少不了用到Mybatis框架,更少不了创建实体类和书写sql语句,当数据库表很多时,手动创建会耗时耗力,做着大量重复性的工作,很让人头疼,下面我将介绍如何配置利用Mybatis插件自动创建生成。

    在pom.xml中添加如下依赖:

    mysql

    mysql-connector-java

    8.0.11

    org.mybatis.spring.boot

    mybatis-spring-boot-starter

    1.3.2

    springboot-mybatis

    org.mybatis.generator

    mybatis-generator-maven-plugin

    1.3.2

    true

    true

    tableName

    mysql

    mysql-connector-java

    8.0.11

    在resources目录下创建generatorConfig.properties文件,并添加如下的配置:

    #生成实体类的所需数据连接参数

    driverClass= com.mysql.cj.jdbc.Driver

    connectionURL=jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false

    username=root

    password=123456

    # 生成的实体类和包的路径

    modelPackage=com.demo.tools.domain

    daoPackage=com.demo.tools.persistence

    在resources目录下创建generatorConfig.xml文件:

    /p>

    PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

    "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

    connectionURL="${connectionURL}"

    userId="${username}"

    password="${password}">

    注意在上面的"

    在IDEA内置的Terminal中输入命令:mvn clean mybatis-generator:generate

    如图,即可成功:

    1552aa19e669

    success

    然后到你的target目录下,找到你要生成的文件,复制到你的项目里就好了!!!

    1552aa19e669

    image.png

    展开全文
  • Mybatis自动生成实体类等代码具体步骤 具体步骤 在本机随便找个目录存放以下文件,如图(mybatis-generator-core-1.3.5.jar 和 mysql-connector-java-5.1.47.jar 随便网上下载) 配置generatorConfig.xml文件,下图...
  • MyBatis自动生成实体类、DAO接口和Mapping映射文件的代码,数据库为Mysql或SqlServer。
  • Mybatis自动生成 实体类 mybatis需要的包 Mybatis 可以 通过 xml 来配置你要实现的sql 也 可以通过注解 配置。 在这里我建议是通过xml配置,因为动态sql语言通过xml配置更加的形象。有便于便于程序员的编译 简介一下...
  • MyBatis自动生成实体类和mapper文件工具包 开发中我们建好数据库后还要写它的实体类,set/get方法,以及mapper.java和mapper.xml文件 资源文件在 [ 我的资源 ](注意:是标题为“generator-Mybatis快速生成实体类...
  • SpringBoot集成Mybatis 自动生成实体类和Mapper 1.使用IDEA创建一个空的SpringBoot项目 2.在pom.xml中引入以下配置 <properties> <project.build.sourceEncoding>UTF-8</project.build...
  • SpringBoot集成Mybatis 自动生成实体类和Mapper1.使用IDEA创建一个空的SpringBoot项目2.在pom.xml中引入以下配置UTF-8UTF-81.8${basedir}/src/main/javacom.jiafly.falsework.daocom.jiafly.falsework.entity${...
  • MyBatis自动生成实体类、DAO接口和Mapping映射文件 0,准备三个包,第一个,mybatis-3.2.7.jar 第二个,mybatis-generator-core-1.3.2.jar 第三个,mysql-connector-java-5.1.25-bin.jar 1,Eclipse-help-Eclipse ...
  • Mybatis自动生成实体类、dao接口、mapper.xml文件 Mybatis可以通过逆向工程,自动生成实体类、dao接口、mapper.xml文件 以下使用的是Intellij Idea进行自动生成 一、首先,要在pom.xml中导入插件,在中加入以下插件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,885
精华内容 754
关键字:

mybatis自动生成实体类