发表于: 2018-03-19 22:08:30
1 547
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了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,但是也让自己对公司框架有了更深入的理解.
评论