发表于: 2018-03-19 22:08:30

1 549


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

进行了登陆验证和动态SQL的尝试拼接.

首先是后台登录验证, 在做的时候发现没有在excel写入通过账户名称查找id的语句,所以就只有自己在代码中增加,跟着其他语句依样画葫芦...

首先是在要在dao.xml中添加需要执行的SQL语句,这个坑死我了,我一开始就没加,就一直空指针异常.

<?xml version="1.0" encoding="UTF-8"?>
<dal>
  <route>
     <object name="com.ptteng.polyFinance.lgd.model.Admin"
        listenerClass="" strategyProperty="">
       
       
       
                 
       
                 
       
              <list name="getAdminIdsAll" sqlitem="select id from admin where 1 = 1 order by create_at desc"
           keyProperty="version" valueProperty="id" keyColumn="version" />

        <map name = "getObjectByLoginName" sqlitem = "select id from admin where login_name = ?" keyProperty="loginName" valueProperty="id" keyColumn="login_name" />
       
        <dbStrategy name="mutiDS"
               clasz="com.gemantic.dal.route.strategy.DefaultStrategy">  <pattern value="[0-9]$" group="polyFinance_lgd" />
           </dbStrategy>
       
     </object>
  </route>
</dal>

红色部分为我自己添加.

然后是Service

接下来是实现类:

再接下来是client里面进行配置:

这样就可以在我们的admin-web中进行登录验证的查询了...


@RequestMapping(value = "/a/admin/login", method = RequestMethod.POST)
public String adminLogin(ModelMap modelMap, String loginName, String pswd) {

try {
System.out.println(adminService.getObjectByLoginName(loginName));
       if (loginName.equals(adminService.getObjectByLoginName(loginName).getLoginName()) && pswd.equals(adminService.getObjectByLoginName(loginName).getPswd())) {
modelMap.addAttribute("code", 0);
       }else {
modelMap.addAttribute("code", 4001);
       }
} catch (ServiceException e) {
e.printStackTrace();
   } catch (ServiceDaoException e) {
e.printStackTrace();
   }
return "polyFinance-lgd-server/admin/json/adminLoginJson";
}

这里只是做了一个简单的查询匹配,密码加密什么的还没有做,后续再添加.


另外是跟着培宇大佬做的动态SQL的一个工具.

package com.ptteng.polyFinance.lgd.utils;

import com.ptteng.polyFinance.lgd.model.User;

import java.util.HashMap;
import java.util.Map;

/**
* @author lujing
* Create_at 2018/3/17 11:07
*/
public class DynamicUtil {
/**
    * 用户列表动态查询
    *
    * @param name           姓名
    * @param phoneNum       手机号
    * @param accountsStatus 账户状态
    * @param createAtStart  注册日期起
    * @param createAtEnd    注册日期止
    * @param managerNum     理财经理
    * @return 拼接的查询条件
    */
   public static Map<String, Object> getUserListSql(String name, String phoneNum, Integer accountsStatus, Long createAtStart, Long createAtEnd, String managerNum) {
Map<String, Object> param = new HashMap<>();
       
       if (name != null && !name.equals("")) {
param.put("name & like", "'%" + name + "%'");
       }
if (phoneNum != null && !phoneNum.equals("")) {
param.put("phone_num & like", "'%" + phoneNum + "%'");
       }

if (accountsStatus != null && !accountsStatus.equals("")) {
param.put("accounts_status & like", "'%" + accountsStatus + "%'");
       }
if (createAtStart != null && !createAtStart.equals("")) {
param.put("create_at & >=", createAtStart);
       }
if (createAtEnd != null && !createAtEnd.equals("")) {
param.put("create_at & <=", createAtEnd);
       }
if (managerNum != null && !managerNum.equals("")) {
param.put("manager_num & like", "'%" + managerNum + "%'");
       }

param.put("@table", "user");
       param.put("@order", "create_at desc");
       return param;
   }

public static Map<String, Object> updateTableFieldById(String table, String field, String value, Long id) {
Map<String, Object> param = new HashMap<>();
       
       param.put("@update", "");
       param.put("@table", table);
       param.put("@field", "serial_num");
       param.put("@value", value);
       param.put("id & ", id);
       
       return param;
   }


}


之后凡是有动态查询都可以使用这个表格.


另外想问一下师兄的是, 更新是否也可以用这个动态的方式来执行?


另外解决了国际化乱码的问题:

还是springmvc 国际化的中文乱码问题。

(1)现象比较奇特,能够读取到配置文件的信息,但是中文乱码,试了很多种方法包括,修改项目字符集,修改propertites文件的字符集,修改propertites的文件名也不行,反正网上的方法都试了。

(2)然后就有说需要在这个bena配置一下属性

<property name="defaultEncoding" value="UTF-8"/>

但是ResourceBundleMessageSource 中并没有这个属性。这里需要使用另外一个类

ReloadableResourceBundleMessageSource

然后就是这样子

<!--配置国际化-->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="messages"/>
<property name="useCodeAsDefaultMessage" value="false"/>
   <property name="defaultEncoding" value="UTF-8"/>
</bean>

但是这个的报错又是

org.springframework.context.NoSuchMessageException: No message found under code 1233' for locale 'zh_CN'.

这个配置文件明明就在这儿,但是没有被加载。

然后百度了一下这两个类的区别

http://blog.csdn.net/shuangyidehudie/article/details/40586143

这个的区别主要是一个可以设置字符集,另一个不行。然后加载配置文件的方式也不一样了,ReloadableResourceBundleMessageSource这个类需要在classpath下找。

默认实在classpath下面找的。

但是加上之后就会报错

但是,奇迹的事情就是。。。。这样偏偏就可以拉。。

终于解决了。


明天计划的事情:(一定要写非常细致的内容) 

进行产品列表增删改查以及模糊查询.


遇到的问题:(遇到什么困难,怎么解决的) 

问题在上面已经描述.

收获:(通过今天的学习,学到了什么知

虽然是一开始excel的问题,导致了自己需要去添加简单的SQL,但是也让自己对公司框架有了更深入的理解.



返回列表 返回列表
评论

    分享到