V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  vishun  ›  全部回复第 3 页 / 共 10 页
回复总数  184
1  2  3  4  5  6  7  8  9  10  
134 天前
回复了 zedking 创建的主题 Edge edge 又作恶?
真的恶心,这种小动作不停的,一套一套的。
正在用`stretchly`,已满足要求。
@lfitzgerald #1 你这个不准:
续费价格等值人民币 (CNY): 210.42

交易价格等值人民币 (CNY): 140.00

剩余价值 (CNY): 189.09

溢价金额 (CNY): -49.09
148 天前
回复了 dc2002007 创建的主题 Java 为何不选 Hibernate,非要 MyBatis?
原先也很倾向纯 ORM ,但是现在反而越来越觉得复杂 sql 还是原生的更直观,可以参考这个[根据条件分页查询用户列表]( https://gitee.com/mybatis-flex/mybatis-flex/issues/I90V7G#note_25272825_link),我贴过来:
```
/**
* 根据条件分页查询用户列表
*
* @param searchReq 用户信息
*
* @return 用户信息集合信息
*/
@Override
@DataScope(deptAlias = SysDept.TABLE_ALIAS, userAlias = SysUser.TABLE_ALIAS)
public Page<SysUser> selectUserList(PageAdapter<SysUser> pageAdapter, final SysUser searchReq) {
final QueryWrapper queryWrapper = queryChain()
.select(SYS_USER.DEFAULT_COLUMNS, SYS_DEPT.DEPT_NAME, SYS_DEPT.LEADER)
.from(SYS_USER.as(SysUser.TABLE_ALIAS))
.leftJoin(SYS_DEPT).as(SysDept.TABLE_ALIAS).on(SYS_USER.DEPT_ID.eq(SYS_DEPT.DEPT_ID))

.eq(SysUser::getDelFlag, UserConstants.NORMAL) // 是否删除: 否
.eq(SysUser::getUserId, searchReq.getUserId(), IdUtils.isIdValid(searchReq.getUserId())) // 用户 ID
.like(SysUser::getUserName, searchReq.getUserName(), StrUtil.isNotBlank(searchReq.getUserName())) // 用户名称
.eq(SysUser::getStatus, searchReq.getStatus(), StrUtil.isNotBlank(searchReq.getStatus())) // 用户状态
.like(SysUser::getPhonenumber, searchReq.getPhonenumber(), StrUtil.isNotBlank(searchReq.getPhonenumber())) // 手机号码
.ge(SysUser::getCreateTime, searchReq.getParams().getBeginTime(), Objects.nonNull(searchReq.getParams().getBeginTime())) // 创建时间开始
.le(SysUser::getCreateTime, searchReq.getParams().getEndTime(), Objects.nonNull(searchReq.getParams().getEndTime())) // 创建时间结束
.and(qw -> qw.eq(SysUser::getDeptId, searchReq.getDeptId()) // 部门过滤
.or(SYS_USER.DEPT_ID.in(QueryWrapper.create().select(SYS_DEPT.DEPT_ID)
.from(SYS_DEPT)
.where(QueryMethods.findInSet(QueryMethods.number(searchReq.getDeptId()), SYS_DEPT.ANCESTORS).gt(0)))),
IdUtils.isIdValid(searchReq.getDeptId()))
// 数据权限
.and(qw -> qw.where(searchReq.getParams().getDataScope()), searchReq.getParams().hasDataScopeFilter());

return getMapper().paginate(pageAdapter.getPage(), queryWrapper);
}
```
如果用 xml 差不多是这样:
```
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password,
u.sex,u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time,
u.remark,
u.show_tag,
d.dept_name, d.leader
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0'
<if test="searchValue != null and searchValue != ''">
AND (
u.user_name like concat('%', #{searchValue}, '%')
OR u.nick_name like concat('%', #{searchValue}, '%')
)
</if>
<if test="userId != null ">
AND u.user_id = #{userId}
</if>
<if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%')
</if>
<if test="status != null and status != ''">
AND u.status = #{status}
</if>
<if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>
<if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
</if>
<if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
</if>
<if test="deptId != null and deptId != 0">
AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET
(#{deptId},ancestors) ))
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
```
个人感觉 xml 方式反而更加直观看出查询的字段和检索条件。
绝对压根没有用参数化查询
用 fastcgi 应该没问题吧?
173 天前
回复了 azev 创建的主题 宽带症候群 关于 frp 内网穿透能不能实现这一点
貌似没提供多少 api ,但是它有个 web 界面,可以参考这个 web 界面怎么实现动态配置的,或者是更简单的自己写个脚本,触发来替配置或注释配置,然后调用应用重启来生效。
181 天前
回复了 hubaq 创建的主题 互联网 RustDesk 由于诈骗猖獗,暂停国内服务
这官方纯有病,其他国家电诈少吗?相关中国目前打击电诈的力度是数一数二的,一个举报就封禁整个区域,真行。
@rehoni #9 我的手机浏览器不是弹广告,而是一进去就自动请求淘宝、京东等要求打开这些 app ,现在手机浏览器上看到简书链接根本不敢点进去,也就 PC 端还敢点,但是早就没什么好内容了。
253 天前
回复了 hankli 创建的主题 程序员 一个工具管理所有运行时版本!
合 nvm 的区别是这个可以管理更多的工具吗?只针对 npm 来说,功能和 nvm 一样?
@huangliu #25 仔细观察了下,当这个 db 中没有数据时,别名就不会显示。
数据库别名挺赞,但是发现 bug ,只有第一次的能保存上,再增加别名就不显示了,重启也不管用。
用过,非常慢
最近有玩《超能世界》,放置的,不要氪金,慢慢玩,每天半小时收菜,还可以。
295 天前
回复了 villivateur 创建的主题 发音 吐槽一下某同事,居然把 Ubuntu 读成 uboot
@huanghanzhilian #59 首先你插广告是不是有点问题,其次在线的 demo 最起码给个管理端的功能演示的地址啊。
308 天前
回复了 lostexile 创建的主题 程序员 开源电商代码,有推荐的吗?
niushop 网址应该是.com 而不是.net 后缀吧,很多年前买过这个,他们是用 thinkphp 写的,当初他们完全是照着 shopnc 写的,该有的功能还是挺全的。现在不知道迭代的怎么样了。
话说当初 shopnc 的功能确实非常不错,而且有 php 和 java 两个版本,收费很贵,但代码质量也很高,比 ecshop 高多了,刚打开他们网站发现 php 版本已经没了,只剩下 java 版本的了。
319 天前
回复了 mouseman 创建的主题 游戏 局域网远程串流游戏最佳方案是什么?
@montaro2017 #15 A 卡也可以,不过服务端装 sunshine (同一个公司的),测试比 steamlink 要流畅。
321 天前
回复了 abc9999 创建的主题 问与答 一对多时 Mybatis 的分页方案
感觉这个和 n+1 问题的解决方法是一致的,第二个 sql 不要再联表了,而是只根据 blogIds 取 attachment 表中所有数据,然后其他的放到应用层处理,group by 一下组装成 blogId 和 attachmentList 的 map ,然后再遍历原有的 blogList ,将 attachementList 附加到 blog 列表中。
1  2  3  4  5  6  7  8  9  10  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1124 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.