欢迎光临
感谢一路有你

ssm学习笔记精选(1)

如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
 

1.判断提交方式
if(request.getMethod().equals("POST")){}

2.返回json
@ResponseBody
3.限定请求方式
@RequestMapping(value="/login",method= RequestMethod.POST)
4.session


<code class="">//   String a = &quot;aaaaaa&quot;;
//    //当前用户的会话对象”为空(第一次访问时)则创建一个新的会话对象返回
//            HttpSession session = request.getSession(true);
//            System.out.println(&quot;session_a:&quot;+session.getAttribute(&quot;session_a&quot;));
//    //        创建session
//            session.setAttribute(&quot;session_a&quot;,a);
//            String b = &quot;bbbbbbb&quot;;
//            session.setAttribute(&quot;session_b&quot; , b);
//    //        获取session
//            System.out.println(&quot;session_a&quot;+session.getAttribute(&quot;session_a&quot;));
//            System.out.println(&quot;session_b&quot;+session.getAttribute(&quot;session_b&quot;));
</code>

5.controller传参到视图


<code class="">第一种
    @Autowired
        private AccountService accountService;
    @RequestMapping(&quot;/index&quot;)
    public String index(Model model) {
            //调动业务层方法service
           List&lt;Account> list =  accountService.findAll();
            //存进数据
            model.addAttribute(&quot;list&quot;,list);
                return &quot;admin/login/index&quot;;
    }

第二种
        ModelAndView mv=new ModelAndView();
        mv.addObject(&quot;userinfos&quot;,all);
        mv.setViewName(&quot;allUser&quot;);
        return mv
</code>
  1. 实现MySQL自动生成实体类
    MySQLGeneratorEntityUtil.java

<code class="">package com.zf.utiles;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class MySQLGeneratorEntityUtil {
     //表名
    private String tableName;
     //列名数组
    private String[] colNames;
     //列名类型数组
    private String[] colTypes;
    //列名大小数组
    private int[] colSizes;
    //列名注释
    private Map colNamesComment = new HashMap();
     //是否需要导入包java.util.*
    private boolean needUtil = false;
     //是否需要导入包java.sql.*
    private boolean needSql = false;
    //是否需要导入包java.math.BigDecimal
    private boolean needBigDecimal = false;
     //是否创建EntityHelper
    private boolean needEntityHelper = true;
    private static final SimpleDateFormat SDF = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);
    private static final String SQL = &quot;SELECT * FROM &quot;;// 数据库操作

    // 数据库配置信息
    private static final String URL = &quot;jdbc:mysql://127.0.0.1:3306/zfadmin_java&quot;;
    private static final String NAME = &quot;root&quot;;
    private static final String PASS = &quot;&quot;;
    private static final String DRIVER = &quot;com.mysql.jdbc.Driver&quot;;

    //指定实体生成所在包的路径
    private static String basePath = new File(&quot;&quot;).getAbsolutePath();
    //指定包名
    private static String packageOutPath = &quot;com.zf.entity&quot;;
    //作者名字
    private String authorName = &quot;子枫&quot;;
    //指定需要生成的表的表名,全部生成设置为null
    private String[] generateTables = null;
     //主键
    private static String pk;

    private MySQLGeneratorEntityUtil() {
    }

    /**
     * @description 生成class的所有内容
     */
    private String parse() {
        StringBuffer sb = new StringBuffer();
        sb.append(&quot;package &quot; + packageOutPath + &quot;;\r\n&quot;);
        sb.append(&quot;\r\n&quot;);
        // 判断是否导入工具包
        if (needUtil) {
            sb.append(&quot;import java.util.Date;\r\n&quot;);
         }
        if (needSql) {
            sb.append(&quot;import java.sql.*;\r\n&quot;);
         }

       for (int i = 0; i &lt; colNames.length; i++) {
           String hasbd = sqlType2JavaType(colTypes[i]);
           if(hasbd ==&quot;BigDecimal&quot; || &quot;BigDecimal&quot;.equals(hasbd)) {needBigDecimal=true;}
        }
       if(needBigDecimal) {
           sb.append(&quot;import java.math.BigDecimal;\r\n&quot;);
        }
         // 注释部分
        sb.append(&quot;/**\r\n&quot;);
        sb.append(&quot; * table name:  &quot; + tableName + &quot;\r\n&quot;);
        sb.append(&quot; * author name: &quot; + authorName + &quot;\r\n&quot;);
        sb.append(&quot; * create time: &quot; + SDF.format(new Date()) + &quot;\r\n&quot;);
        sb.append(&quot; */ \r\n&quot;);
        // 实体部分
        String classExtends = &quot;&quot;;
        if(needEntityHelper) {
            classExtends=&quot; extends EntityHelper&quot;;
          }
        sb.append(&quot;public class &quot; + under2camel(tableName, true) + classExtends + &quot;{\r\n\r\n&quot;);

        processAllAttrs(sb);// 属性
        sb.append(&quot;\r\n&quot;);
        processConstructor(sb);//构造函数
        processAllMethod(sb);// get set方法
        processToString(sb);
        if(needEntityHelper) {
             processEntityHelper(sb,pk);
          }
        sb.append(&quot;}\r\n&quot;);
        return sb.toString();
    }

    /**
     * @param sb
     * @description 生成所有成员变量及注释
     * @author paul
     * @version V1.0
     */
    private void processAllAttrs(StringBuffer sb) {
        for (int i = 0; i &lt; colNames.length; i++) {
            if(colNamesComment.get(colNames[i])!=null &amp;&amp;!&quot;&quot;.equals(colNamesComment.get(colNames[i]))) {
                sb.append(&quot;\t/*&quot;+colNamesComment.get(colNames[i])+&quot;*/\r\n&quot;);
            }
          sb.append(&quot;\tprivate &quot; + sqlType2JavaType(colTypes[i]) + &quot; &quot; + colNames[i] + &quot;;\r\n&quot;);
        }
    }
    /**
     * EntityHelper
     * @param sb
     * @param pk
     */
   private void processEntityHelper(StringBuffer sb,String pk) {
       sb.append(&quot;\t@Override\r\n&quot;);
       sb.append(&quot;\tpublic String getPrimaryKey() {\r\n&quot;);
       sb.append(&quot;\t\treturn \&quot;&quot;+pk+&quot;\&quot;;\r\n&quot;);
       sb.append(&quot;\t}\r\n&quot;);
   }
    /**
     * 重写toString()方法
     * @param sb
     */
    private void processToString(StringBuffer sb) {
        sb.append(&quot;\t@Override\r\n\tpublic String toString() {\r\n&quot;);
        sb.append(&quot;\t\treturn \&quot;&quot; +tableName + &quot;[\&quot; + \r\n&quot;);
        for (int i = 0; i &lt; colNames.length; i++) {
            if (i != 0)
                sb.append(&quot;\t\t\t\&quot;, &quot;);
            if (i == 0)
                sb.append(&quot;\t\t\t\&quot;&quot;);
            sb.append(colNames[i] + &quot;=\&quot; + &quot;
                    + colNames[i]).append(&quot; + \r\n&quot;);
            if (i == colNames.length - 1) {
                sb.append(&quot;\t\t\t\&quot;]\&quot;;\r\n&quot;);
            }
        }
        sb.append(&quot;\t}\r\n&quot;);
    }
    /**
     * 构造函数
     * @param sb
     */
    private void processConstructor(StringBuffer sb) {
         StringBuffer p = new StringBuffer();
         StringBuffer v = new StringBuffer();
         for(int i = 0; i &lt; colNames.length; i++) {
             p.append(sqlType2JavaType(colTypes[i])+&quot; &quot;+colNames[i]);
             if(i!=colNames.length-1) {
                 p.append(&quot;,&quot;);
             }
             v.append(&quot;\t\tthis.&quot;+colNames[i]+&quot;=&quot;+colNames[i]+&quot;;\r\n&quot;);
         }
         //无参数构造函数
        sb.append(&quot;\tpublic &quot;+under2camel(tableName,true)+&quot;() {\r\n&quot;);
        sb.append(&quot;\t\tsuper();\r\n&quot;);
        sb.append(&quot;\t}\r\n&quot;);
         //带参构造函数
        sb.append(&quot;\tpublic &quot;+under2camel(tableName,true)+&quot;(&quot;+p.toString()+&quot;) {\r\n&quot;);
        sb.append(v.toString());
        sb.append(&quot;\t}\r\n&quot;);
    }

    /**
     * @param sb
     * @description 生成所有get/set方法
     */
    private void processAllMethod(StringBuffer sb) {
        for (int i = 0; i &lt; colNames.length; i++) {
            sb.append(&quot;\tpublic void set&quot; + initCap(colNames[i]) + &quot;(&quot; + sqlType2JavaType(colTypes[i]) + &quot; &quot;
                    + colNames[i] + &quot;){\r\n&quot;);
            sb.append(&quot;\t\tthis.&quot; + colNames[i] + &quot;=&quot; + colNames[i] + &quot;;\r\n&quot;);
            sb.append(&quot;\t}\r\n&quot;);
            sb.append(&quot;\tpublic &quot; + sqlType2JavaType(colTypes[i]) + &quot; get&quot; + initCap(colNames[i]) + &quot;(){\r\n&quot;);
            sb.append(&quot;\t\treturn &quot; + colNames[i] + &quot;;\r\n&quot;);
            sb.append(&quot;\t}\r\n&quot;);
        }
    }

    /**
     * @param str 传入字符串
     * @return
     * @description 将传入字符串的首字母转成大写
     */
    private String initCap(String str) {
        char[] ch = str.toCharArray();
        if (ch[0] >= 'a' &amp;&amp; ch[0] &lt;= 'z')
            ch[0] = (char) (ch[0] - 32);
        return new String(ch);
    }

    /**
      * 功能:下划线命名转驼峰命名
     * @param s
     * @param fistCharToUpperCase 首字母是否大写
     * @author 呐喊
     * @return
     */
    private String under2camel(String s,boolean fistCharToUpperCase) {
       String separator = &quot;_&quot;;
        String under=&quot;&quot;;
        s = s.toLowerCase().replace(separator, &quot; &quot;);
        String sarr[]=s.split(&quot; &quot;);
        for(int i=0;i&lt;sarr.length;i++)
        {
            String w=sarr[i].substring(0,1).toUpperCase()+sarr[i].substring(1);
            under +=w;
        }
        if(!fistCharToUpperCase) {
            under = under.substring(0,1).toLowerCase()+under.substring(1);
        }
        return under;
    }

    /**
     * @return
     * @description 查找sql字段类型所对应的Java类型
     */
    private String sqlType2JavaType(String sqlType) {
        if (sqlType.equalsIgnoreCase(&quot;bit&quot;)) {
            return &quot;boolean&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;tinyint&quot;)) {
            return &quot;byte&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;smallint&quot;)) {
            return &quot;short&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;int&quot;)) {
            return &quot;int&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;bigint&quot;)) {
            return &quot;long&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;float&quot;)) {
            return &quot;float&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;numeric&quot;)
                || sqlType.equalsIgnoreCase(&quot;real&quot;) || sqlType.equalsIgnoreCase(&quot;money&quot;)
                || sqlType.equalsIgnoreCase(&quot;smallmoney&quot;)) {
            return &quot;double&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;varchar&quot;) || sqlType.equalsIgnoreCase(&quot;char&quot;)
                || sqlType.equalsIgnoreCase(&quot;nvarchar&quot;) || sqlType.equalsIgnoreCase(&quot;nchar&quot;)
                || sqlType.equalsIgnoreCase(&quot;text&quot;)|| sqlType.equalsIgnoreCase(&quot;longtext&quot;)) {
            return &quot;String&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;datetime&quot;)) {
            return &quot;Date&quot;;
        } else if (sqlType.equalsIgnoreCase(&quot;image&quot;)) {
            return &quot;Blod&quot;;
         }else if (sqlType.equalsIgnoreCase(&quot;decimal&quot;)) {
             return &quot;BigDecimal&quot;;
         }
        return null;
    }
    /**
     * 功能:获取并创建实体所在的路径目录
     * @return
     */
    private static String pkgDirName() {
       String dirName = basePath + &quot;/src/&quot; + packageOutPath.replace(&quot;.&quot;, &quot;/&quot;);
       File dir = new File(dirName);
       if (!dir.exists()) {dir.mkdirs();System.out.println(&quot;mkdirs dir 【&quot; + dirName + &quot;】&quot;);}
       return dirName;
    }
    /**
     * 生成EntityHelper
     */
    private void EntityHelper() {
        String dirName = MySQLGeneratorEntityUtil.pkgDirName();
        String javaPath = dirName + &quot;/EntityHelper.java&quot;;
       try {
           StringBuffer sb = new StringBuffer();
          sb.append(&quot;package &quot; + packageOutPath + &quot;;\r\n&quot;);
          sb.append(&quot;\r\n&quot;);
          sb.append(&quot;public abstract class EntityHelper{\r\n\r\n&quot;);
          sb.append(&quot;\tpublic abstract String getPrimaryKey();\r\n&quot;);
          sb.append(&quot;\r\n&quot;);
          sb.append(&quot;}\r\n&quot;);
            FileWriter fw = new FileWriter(javaPath);
            PrintWriter pw = new PrintWriter(fw);
            pw.println(sb.toString());
          pw.flush();
          if (pw != null){pw.close();}
          System.out.println(&quot;create class 【EntityHelper】&quot;);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * @description 生成方法
     */
    private void generate() throws Exception {
        //与数据库的连接
        Connection con;
        PreparedStatement pStemt = null;
        Class.forName(DRIVER);
        con = DriverManager.getConnection(URL, NAME, PASS);
        System.out.println(&quot;connect database success...&quot;+con);
        //获取数据库的元数据
        DatabaseMetaData db = con.getMetaData();
        //是否有指定生成表,有指定则直接用指定表,没有则全表生成
        List&lt;String> tableNames = new ArrayList&lt;>();
        if (generateTables == null) {
            //从元数据中获取到所有的表名
            ResultSet rs = db.getTables(null, null, null, new String[] { &quot;TABLE&quot; });
            while (rs.next()) tableNames.add(rs.getString(3));
        } else {
            for (String tableName : generateTables) tableNames.add(tableName);
        }
       if(needEntityHelper) {
         EntityHelper();
        }
        String tableSql;
        PrintWriter pw = null;
        for (int j = 0; j &lt; tableNames.size(); j++) {
            tableName = tableNames.get(j);
            tableSql = SQL + tableName;
            pStemt = con.prepareStatement(tableSql);
            ResultSetMetaData rsmd = pStemt.getMetaData();
            ResultSet rsk = con.getMetaData().getPrimaryKeys(con.getCatalog().toLowerCase(), null, tableName);
            if (rsk.next()) {
             String primaryKey = rsk.getString(&quot;COLUMN_NAME&quot;);
             pk=primaryKey;
               }
            int size = rsmd.getColumnCount();
            colNames = new String[size];
            colTypes = new String[size];
            colSizes = new int[size];
            //获取所需的信息
            for (int i = 0; i &lt; size; i++) {
                colNames[i] = rsmd.getColumnName(i + 1);
                colTypes[i] = rsmd.getColumnTypeName(i + 1);
                if (colTypes[i].equalsIgnoreCase(&quot;datetime&quot;))
                    needUtil = true;
                if (colTypes[i].equalsIgnoreCase(&quot;image&quot;) || colTypes[i].equalsIgnoreCase(&quot;text&quot;))
                    needSql = true;
                colSizes[i] = rsmd.getColumnDisplaySize(i + 1);
            }
            //获取字段注释
          ResultSet rsComment = pStemt.executeQuery(&quot;show full columns from &quot; + tableName);
          while (rsComment.next()) {
                colNamesComment.put(rsComment.getString(&quot;Field&quot;), rsComment.getString(&quot;Comment&quot;));
            }
          //解析生成实体java文件的所有内容
        String content = parse();
          //输出生成文件
        String dirName = MySQLGeneratorEntityUtil.pkgDirName();
        String javaPath = dirName + &quot;/&quot; + under2camel(tableName, true) + &quot;.java&quot;;
        FileWriter fw = new FileWriter(javaPath);
        pw = new PrintWriter(fw);
        pw.println(content);
        pw.flush();
        System.out.println(&quot;create class 【&quot; + tableName + &quot;】&quot;);
        }
        if (pw != null)
            pw.close();
    }

    public static void main(String[] args) {

        MySQLGeneratorEntityUtil instance = new MySQLGeneratorEntityUtil();
        //instance.basePath=&quot;&quot;; //指定生成的位置,默认是当前工程
        try {
              instance.generate();
            System.out.println(&quot;generate Entity to classes successful!&quot;);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

</code>
  1. idea 端口1099改为其他的,无法进入debug模式
    https://www.cnblogs.com/LeoBoy/p/5798947.html
    mac关闭端口 https://blog.csdn.net/aaaaazq/article/details/80928175
  2. session

赞(0) 打赏
未经允许不得转载:王明昌博客 » ssm学习笔记精选(1)
分享到: 更多 (0)

相关推荐

  • 暂无文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

×
订阅图标按钮