因为是字符串啊
因为上次 Map<String ,Object> param=new HashMap<String, Object>(); 就相当于创建了个集合的对象 param ,而每个 map 中的 key 是一样的,就可以直接用已经创建的 param 来存储,没有新创建容器,只是更新了 value 而已,而你新创建 param2 就相当于又在内存中开辟了空间存储有相同 key 的容器,浪费了空间。
我有些明白了,就是用get(i)取出来
这是查询单个信息吧,你的params的size为0,因为你的控制层那里,param.put()数据放进去之后,没有往List<Map<String Object>> params加入.
应该少一句
params.add(param);
哦哦,是在GoddessDao里面忘了给sql语句加空格,懂了
result.get(i)得到的是一行数据,还需通过result.get(i).getUser_name()等获取某一个具体值
第二个map.put("name","email")将第一个给覆盖了,注意老师的视频,老师这里有new一个新的map对象哦!
可以的
可以去看java入门第三季,里面的集合框架那一章
都可以,循环这么少效率都是一样的,看个人习惯与喜好吧
要注意sql的語法,如果'小美'沒有加'',換成sql語法時就錯囉~
select * from imooc_goddess where 1=1 and user_name = '小美'
String 类型 线程安全 不可变(通常是值字面量类型)
StringBuffered 线程安全 可变类型 (通常是址类型)
StringBuilder 非线程安全,可变类型 效率高。
区别:对单线程环境,线程安全与非线程安全区执行结果一致,多线程一般采用线程安全。所谓的可变与不可变,是指,对原对象的操作是否会产生新的副本。
应该是项目的字符集不对,SQL 语句拼接时遇到了汉字的乱码。可将项目字符集修改为UTF-8试下。
注意空格
既有and又有or的话建议用小括号括起来 自己确定好优先级
加在前边表示最后一位是相应的字符,加在后边表示第一位是相应的字符,前后都加表示中间是相应的字符,举个例子,如果是%a,最后一位是a的字符串就会被查找出来,a%,第一位是a的字符串就会被查找出,%a%,中间有a的字符串就会找出来。
可是可以,但你只能是通过一个name查了吧
是一个LIST 类。在 TestAction中已经定义了。所以 在goddessDao这里你无法理解。
是LIST<Map<String,Object>的一个实现类ArrayList 的名字,起得是Arraylist的作用,具体内容自己找吧。
错误在哪里?是编译报错 还是运行结果结果报错 还是查询结果为空?
答案很简单啊,“‘2017-06-18’”,注意加上单引号就好了
随便一个参数
你是不是只打印了sql语句?
你看的这个是通过名字进行查询,你想通过ID进行查询只需将sb.append("where user_name = ?")改成sb.append("where id=?")就行了。
在模型类里面user_name设定的就是string类型的
空指针异常,说明你里面属性的值是空 但是还是使用了 要不是sb这个没有值 要不就是下面的list需要List<StoreMoudle> gs 需要这样写 List<StoreMoudle> gs =new arrylist<StoreMoudle>();然后在gs=g.query
好像没有
那样的话得到的sql语句就是: where and user_name=...
1=1 是为了接上 for 循环里的 and,那么 sql 语句就是 where 1=1 and user_name=...
params != null&¶ms.size()>0 ; 这段表示里面是否有数据 。 size()比0小的话 说它是个容器
举个形象的例子,我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你想装水需要去买个水杯(new ArrayList();),我就可以直接装水(list.add(水))。你要是没有杯子直接倒水,水就流出去啦(空指针异常)。所以用做判断的时候经常连用 list!=null && list.size()!=0 。