Peter

PeterChu 信仰之力
11919 号黑客成员, 2018-02-09 16:12:33 加入
3.1k
个人主页浏览
546
帖子 + 回帖
12.9k
贡献点 
2994h2m
在线时长
人生是场修行,求知是种信仰 !
  • SSM 中 MyBatis 的某个 xxxMapper.xml 中,是否可以这样写?

    2019-07-18 19:34

    这块我其实是传的"xxx%xxx%xxxx%xx"
    至于这块拼接 % 的原因大致是因为此处是个 findList 的查询 SQL,适用于很多地方,尤其是用在用户输入某字段值后进行模糊匹配查询,这种可能是因为在这块 sql 中设置拼接 % 比在 C 或 S 层进行拼接要方便多,最主要是这个是 代码生成 的一个功能决定的应该。
    jeeSite 这类有 代码生成 功能的框架应该这么处理是最好的吧。

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-18 17:50

    image.png

    Mysql 这个 Cascade 在更新了主表的关联字段如 user 表中 id 可以更新附表中的关联字段,比如 附表中的 userid 吗?
    有没有一种方法,可以只设置 1 个 字段为外键后,其他几个字段作为同步关联字段,比如 主表 user 表中 id, name, age ,sex 将 id 设置为外键关联附表的 userid 后,同时附表中也包含了 username , userage, 能否不再设置其他外键情况下,实现更新主表中的 id,name, 同步更新附表中的 userid, username 呢?
    还是必须再为 name --> username 做一个外键关联一下?

  • 流氓软件黑名单 Rogue-software Blacklist

    2019-07-18 11:53

    FFNews 这个操作 6 了哦,只要电脑开机未断网,就每天自动通过 IE 访问一次广告。

    image.png

  • SSM 中 MyBatis 的某个 xxxMapper.xml 中,是否可以这样写?

    2019-07-18 10:56

    😁 这个是 jeesite、jeeplus 框架项目里面都是这种,可以配置不同的数据库,不用单独修改 mapper.xml 好像。

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-17 16:17

    IDEA 中怎么可以查看某个类被哪些类引用了?
    就是哪些类中使用了该类做属性,包含着该类?
    ctrl+alt+u 只能查看该类 继承、实现 了哪些类 ?
    emmm..... 应该怎么讲呢?

  • SSM 中 MyBatis 的某个 xxxMapper.xml 中,是否可以这样写?

    2019-07-16 12:15

    没时间测试到底如何实现,还是单独再写一个查询方法了。

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-16 10:30

    SSM 中 MyBatis 的某个 xxxMapper.xml 中,是否可以这样写?

                <if test="planMajorName != null and  planMajorName != '' and r1 = '0'">
                    AND a.planmajorname = #{planMajorName}
                </if>
                <if test="planMajorName != null and  planMajorName != '' and (r1 = null or r1 = '')">
                    AND a.planmajorname LIKE
                    <if test="dbName == 'oracle'">'%'||#{planMajorName}||'%'</if>
                    <if test="dbName == 'mssql'">'%'+#{planMajorName}+'%'</if>
                    <if test="dbName == 'mysql'">concat('%',#{planMajorName},'%')</if>
                </if>
    
  • 我的明月清风我的日常贴

    2019-07-15 21:12

    😭 😭 😭
    昨晚大致浏览了下《此房是我造》,造成心理阴影了,不为别的,只为猫王他孙女。fxxxxxxxxxxxxk.........
    我要忘记这个画面


    image.png

  • 我的明月清风我的日常贴

    2019-07-13 19:56

    我喜欢的 HEXO 主题


    1.Asnippet

    A simple and interesting theme

    image.png

    2.Clover

    A real simple theme

    image.png


    3.Diaspora

    A clean and responsive themeimage.png



    1. 其他的见个人博客主题收藏夹

  • ES6 语法简介

    2019-07-13 17:21

    观后感


    • 写教程相当于练内功,写 app 相当于会武功的镖头闯荡江湖走镖。
    • 古代的绿林江湖门派里的人,每天除了练功,吃啥喝啥啊?
    • 可能人家都是大地主,家里有地有房有矿,岳不群也是个大地主,然后经常派外门弟子去收租子。
    • 咦,这样貌似很好玩哇,明显就像《了不起的修仙模拟器》啦,难道说,武侠游戏的发展趋势就是除了现有的 武功养成,还要加上 门派经济管理, 毕竟经济、政治、文化才是最好玩的,而且,下一波新人类会玩的越来越深,普普通通的一刀一刀砍怪,几率掉宝已经远远低于玩家 G 点阈值了。
    • 嗯,是个好主意。trollface
    • 不错,这篇教程写的好。

    😂 谁控制了我的思路啊,有点飘的害怕

  • 我的明月清风我的日常贴

    2019-07-13 11:03

    “有心为善,虽善不赏,无心为恶,虽恶不罚。” --《聊斋志异 - 考城隍》

  • 我的明月清风我的日常贴

    2019-07-11 16:25

    下一个小风口:有偿付费技术问答 / 服务?

  • IDEA 必备小技巧和插件

    2019-07-10 17:47

    IDEA 中的插件?为什么没选择用有道呢

  • IDEA 必备小技巧和插件

    2019-07-10 16:55

    嗯嗯,我跟着 3.4 已经来了一遍了,嘻嘻。3.3 试了,很好很好。又 get 新姿势了,感谢感谢

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-10 14:49

    关联查询中如果使用了 如下注释中的关联,则会造成查询花费时间很长。 1.38s --> 0.014s

    LEFT JOIN m_rank majorrank ON majorrank.id = a.majorrankid
    -- (
    -- 	majorrank.majorid = emcode.levelformajorsid
    -- 	AND majorrank.universityid = emcode.universityid
    -- )
    
  • IDEA 必备小技巧和插件

    2019-07-10 13:18

    最后 3.4 的第二张图片是不是放错了。3.3 可否有个效果图?我的快捷键可能改过了,查看 UML 快捷键没起作用。

  • IDEA 必备小技巧和插件

    2019-07-10 13:13

    哈哈难怪图片加载好慢的

  • controller 层是否需要抽取 CRUD?

    2019-07-10 12:58

    接上楼(😳 一楼最多 4096 字符)

    	
    	/**
    	 * 授权登录异常
    	 */
    	@ExceptionHandler({AuthenticationException.class})
        public String authenticationException() {  
            return "error/403";
        }
    	
    	/**
    	 *系统登录异常
    	 */
    	@ExceptionHandler({Exception.class})
        public String exception() {  
            return "error/500";
        }
    	
    	/**
    	 * 初始化数据绑定
    	 * 1. 将所有传递进来的String进行HTML编码,防止XSS攻击
    	 * 2. 将字段中Date类型转换为String类型
    	 */
    	@InitBinder
    	protected void initBinder(WebDataBinder binder) {
    		// String类型转换,将所有传递进来的String进行HTML编码,防止XSS攻击
    		binder.registerCustomEditor(String.class, new PropertyEditorSupport() {
    			@Override
    			public void setAsText(String text) {
    				setValue(text == null ? null : StringEscapeUtils.escapeHtml4(text.trim()));
    			}
    			@Override
    			public String getAsText() {
    				Object value = getValue();
    				return value != null ? value.toString() : "";
    			}
    		});
    		// Date 类型转换
    		binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
    			@Override
    			public void setAsText(String text) {
    				setValue(DateUtils.parseDate(text));
    			}
    //			@Override
    //			public String getAsText() {
    //				Object value = getValue();
    //				return value != null ? DateUtils.formatDateTime((Date)value) : "";
    //			}
    		});
    	}
    	
    	
    	/**
    	 * 获取bootstrap data分页数据
    	 * @param page
    	 * @return map对象
    	 */
    	public <T> Map<String, Object> getBootstrapData(Page page){
    		Map<String, Object> map = new HashMap<String, Object>();
    		map.put("rows", page.getList());
    		map.put("total", page.getCount());
    		return map;
    	}
    	
    	
    }
    
    
  • controller 层是否需要抽取 CRUD?

    2019-07-10 12:57

    这是 jeeplus 中的 Controller 层基类,你对比下

    /**
     * 控制器支持类
     * @author jeeplus
     * @version 2016-3-23
     */
    public abstract class BaseController {
    
    	/**
    	 * 日志对象
    	 */
    	protected Logger logger = LoggerFactory.getLogger(getClass());
    
    	/**
    	 * 管理基础路径
    	 */
    	@Value("${adminPath}")
    	protected String adminPath;
    	
    	/**
    	 * 前端基础路径
    	 */
    	@Value("${frontPath}")
    	protected String frontPath;
    	
    	/**
    	 * 前端URL后缀
    	 */
    	@Value("${urlSuffix}")
    	protected String urlSuffix;
    	
    	/**
    	 * 验证Bean实例对象
    	 */
    	@Autowired
    	protected Validator validator;
    
    	/**
    	 * 服务端参数有效性验证
    	 * @param object 验证的实体对象
    	 * @param groups 验证组
    	 * @return 验证成功:返回true;严重失败:将错误信息添加到 message 中
    	 */
    	protected boolean beanValidator(Model model, Object object, Class<?>... groups) {
    		try{
    			BeanValidators.validateWithException(validator, object, groups);
    		}catch(ConstraintViolationException ex){
    			List<String> list = BeanValidators.extractPropertyAndMessageAsList(ex, ": ");
    			list.add(0, "数据验证失败:");
    			addMessage(model, list.toArray(new String[]{}));
    			return false;
    		}
    		return true;
    	}
    	
    	/**
    	 * 服务端参数有效性验证
    	 * @param object 验证的实体对象
    	 * @param groups 验证组
    	 * @return 验证成功:返回true;严重失败:将错误信息添加到 flash message 中
    	 */
    	protected boolean beanValidator(RedirectAttributes redirectAttributes, Object object, Class<?>... groups) {
    		try{
    			BeanValidators.validateWithException(validator, object, groups);
    		}catch(ConstraintViolationException ex){
    			List<String> list = BeanValidators.extractPropertyAndMessageAsList(ex, ": ");
    			list.add(0, "数据验证失败:");
    			addMessage(redirectAttributes, list.toArray(new String[]{}));
    			return false;
    		}
    		return true;
    	}
    	
    	/**
    	 * 服务端参数有效性验证
    	 * @param object 验证的实体对象
    	 * @param groups 验证组,不传入此参数时,同@Valid注解验证
    	 * @return 验证成功:继续执行;验证失败:抛出异常跳转400页面。
    	 */
    	protected void beanValidator(Object object, Class<?>... groups) {
    		BeanValidators.validateWithException(validator, object, groups);
    	}
    	
    	/**
    	 * 添加Model消息
    	 * @param message
    	 */
    	protected void addMessage(Model model, String... messages) {
    		StringBuilder sb = new StringBuilder();
    		for (String message : messages){
    			sb.append(message).append(messages.length>1?"<br/>":"");
    		}
    		model.addAttribute("message", sb.toString());
    	}
    	
    	/**
    	 * 添加Flash消息
    	 * @param message
    	 */
    	protected void addMessage(RedirectAttributes redirectAttributes, String... messages) {
    		StringBuilder sb = new StringBuilder();
    		for (String message : messages){
    			sb.append(message).append(messages.length>1?"<br/>":"");
    		}
    		redirectAttributes.addFlashAttribute("message", sb.toString());
    	}
    	
    	/**
    	 * 客户端返回JSON字符串
    	 * @param response
    	 * @param object
    	 * @return
    	 */
    	protected String renderString(HttpServletResponse response, Object object) {
    		return renderString(response, JsonMapper.toJsonString(object));
    	}
    	
    	/**
    	 * 客户端返回字符串
    	 * @param response
    	 * @param string
    	 * @return
    	 */
    	protected String renderString(HttpServletResponse response, String string) {
    		try {
    			response.reset();
    	        response.setContentType("application/json");
    	        response.setCharacterEncoding("utf-8");
    			response.getWriter().print(string);
    			return null;
    		} catch (IOException e) {
    			return null;
    		}
    	}
    
    	/**
    	 * 参数绑定异常
    	 */
    	@ExceptionHandler({BindException.class, ConstraintViolationException.class, ValidationException.class})
        public String bindException() {  
            return "error/400";
        }
    
    
    
  • 很多人都是大 D

    2019-07-10 10:15

    小兄弟,你太年轻了,你以为这个里真的有那么多人跟你聊?其实都是我一个人回的,不然我换个马甲发同样的话给你看?

  • 记一次 PDF/WORD 文档的读取实现

    2019-07-09 11:13

    image.png
    😂 翻译学院的同学们都是太乙真人的弟子吧,大家一起修仙的吧

  • 记一次 PDF/WORD 文档的读取实现

    2019-07-09 11:07

    image.png

    image.png

    很棒哦,完美躲过了正确识别啊,666

  • 记一次 PDF/WORD 文档的读取实现

    2019-07-08 17:15

    😑小老弟怎么肥四啊,问题还没解决,却已经想好搭建一个工具平台实现变现了啊,接下来是不是可以实现小目标,迎娶白富美了啊

  • 记一次 PDF/WORD 文档的读取实现

    2019-07-08 17:10

    多关键词匹配

  • 我的明月清风我的日常贴

    2019-07-08 15:56

    justep 案例参考,可以用作项目开发设计参考。或许有些还可以有 demo 查看。

    http://www.wex5.com/appstore/
    
  • 记一次 PDF/WORD 文档的读取实现

    2019-07-08 11:44

    难道要用 OCR 文字识别 吗 🤔 😩

  • 记一次 PDF/WORD 文档的读取实现

    2019-07-06 19:29

    LingPipe 诗词情感分类 Demo: https://github.com/Aemerso/LingPipeDemo

  • 我的明月清风我的日常贴

    2019-07-06 17:03

    image.png
    Sublime Text 你什么意思啊,

    虽然试用是不定时(不计时的?),但是必须购买授权才能继续使用。

    是这么翻译吗,那既然试用都不及时啦,那我就一直试用干嘛要去购买授权啊?trollface

    好吧,感觉 Sublime 有点萌萌的在弱弱的抗议哇,还是要感谢 Sublime 如此强大好用,有条件的话一定会去支持一下。