幕布斯3077646
1、insql这种使用sql注入风险,但是你可以自己防止sql注入,例如保证拼接进来的参数,是后端逻辑计算出来的,并且不存在风险的,不是前端传的,如果是前端传的,不建议用这种方式拼接。
2、“王姓”的那个我应该用的是likeRight吧,这个不存在注入风险,你看看打印出来的sql语句就明白了。
独进青楼
主要看场景和习惯,例如你就是一个根据名字查询,name like "%XXX%",或者根据两三个条件查询,就不用再写sql语句了,不用再在Mapper接口中定义方法,定义参数等等,挺方便的,多条件的复杂sql也可以用mp的方式写出来,但是你要做个判断,是用原生写简单还是mp简单。我的原则就是哪个简单哪个快就用哪个写法写,我mp用熟悉了之后,是在减少工作量,而不是增加工作量。
qq_慕莱坞8321514
直接使用select就可以了。
wrapper.select("selece sum(case when )");
慕尼黑9241062
inSql中不可以使用{0}这种形式。
使用apply,你是不是要实现id in (select id from table where name like '网%')这样的sql呢。
你可以这样写
.apply("id in (select id from table where name like {0})","网%")你可以试试看,这个是不是你想要的结果。
慕田峪1314768
第四题不可以使用selectByMap,因为selectByMap中传入的Map参数中的键值对,都会作为where中的等值条件。
例如:
Map<String, Object> map= new HashMap<>(); map.put(name,"laoyuan"); map.put(age,21); userMapper.selectByMap(map);
最后的查询条件为where name='laoyuan' and age=21
wwp
你项目的编码是什么,是UTF-8吗?还有数据库的编码是什么?也是UTF-8吗?
还有你连接数据库的url可以参考以下例子:
jdbc:mysql://localhost:3306/mp?characterEncoding=utf8&serverTimezone=GMT%2B8