插入和删除数据库数据
xml文件
先看数据库SQL实现语句,可以看出来,因为没有返回数据,所以resultType这个参数不会与实体层数据库数据类型的方法绑定,因为输入了多个参数变量,所以也不对输入类型paraType进行约束
<select id="collectCompound">
insert into collections_compound (userid,cid,cname,collectiontime) values (#{userid},#{cid},#{cname},#{collectiontime})
</select>
<select id="uncollectCompound">
delete from collections_compound where userid=#{userid} and cid=#{cid} and cname=#{cname}
</select>
dao.java文件
之后看dao接口文件,因为没有返回数据,所以方法前面的返回值类型可以是void
void collectCompound(@Param("cid")String cid, @Param("userid")String userid,@Param("cname")String cname,@Param("collectiontime")String collectiontime);
void uncollectCompound(@Param("cid")String cid, @Param("userid")String userid,@Param("cname")String cname);
sevice.java文件
在service类里引入刚刚的dao文件资源,由于没有返回的数据所以返回值类型是空,里面直接调用dao文件里的方法就可以,不需要return返回值
import java.util.Date;
import java.util.List;
@Resource
private CompoundDAO compoundDao;
public void collectCompound(String userid,String cid,String cname,String ifCollect){
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
String colectiontime=ft.format(dNow);
if(ifCollect=="收藏"){
compoundDao.collectCompound(userid,cid,cname,colectiontime);
}else {
compoundDao.uncollectCompound(userid,cid,cname);
}
}
controller.java
@ResponseBody
@Resource
private CompoundService compoundService;
@RequestMapping(value = "OperCollectCompound.do", method = RequestMethod.GET, produces = "text/html; charset=UTF-8")
public String OperCollectCompound(String userid,String cid,String cname,String ifCollect){
JSONObject object = new JSONObject();
try{
compoundService.collectCompound(userid,cid,cname,ifCollect);
object.put("flag", "ok");
}catch(Exception e) {
object.put("flag", "err");
}
return object.toJSONString();
}
html里ajax调用接口
function ajaxcollect(userid,cid,rename,ifCollect){
var result;
$.ajaxSettings.async = false;
$.ajax({
type:"get",
url :"OperCollectCompound.do",
data : {userid:userid,cid:cid,cname:rename,ifCollect:ifCollect},
success :function(data) {
// alert(data);
var r= $.parseJSON(data).flag;
// allcount=result.length;
result=r;
// $("#search-id").attr("value",strc); // 设置input输入框的 value参数, 刷新页面时显示
// /* 保存 异步加载内容, 回退时加载 */
// historySave("compound-content");
},
error :function(e) {
layer.msg('An unknown error occurred !',{time:500});
result=e;
}
});
return result;
}
搜索是否被某个用户收藏
xml数据库语句实现
想简单的判断一套数据是否在表格里存在可以使用这个语句,不返回数据,只是存在返回1,不存在返回0,SELECT EXISTS(SELECT 1 FROM table_name WHERE column1=value)
写一个sql语句作为dao里的ifCollect方法的实现层
<select id="ifCollect">
SELECT EXISTS(SELECT 1 FROM collections_compound WHERE userid=#{userid} and cid=#{cid})
</select>
dao.java文件写ifCollect方法
返回的是1或0的数字
java可以用object不指定类型的定义变量,不知道反复具体返回的变量类型可以使用Object返回值
getClass()方法可以获取变量类型
int ifCollect(@Param("userid")String userid,@Param("cid")String cid);
service层
public String ifCollect(String userid,String cid){
String ifcollect=null;
int ifexit=HqDao.ifCollect(userid,cid);
if(ifexit==1){
ifcollect="exit";
}else{
ifcollect="notexit";
}
// JOptionPane.showMessageDialog(null, ifexit.toString());
// JOptionPane.showMessageDialog(null, ifexit.getClass().toString());
return ifcollect;
}
controller层
@ResponseBody
@RequestMapping(value = "hqifCollect.do", method = RequestMethod.GET, produces = "text/html; charset=UTF-8")
public String ifCollect(String userid,String cid){
JSONObject object = new JSONObject();
try{
String ifexit=hqService.ifCollect(userid,cid);
object.put("flag", ifexit);
}catch(Exception e) {
object.put("flag", "err");
System.out.println(e);
}
return object.toJSONString();
}
做完之后一直报错,发现是线路文件没有指定返回的结果类型
攻一下xml里的SQL语句,加上返回的类型是int
<select id="ifCollect" resultType="int">
SELECT EXISTS(SELECT 1 FROM collections_compound WHERE userid=#{userid} and cid=#{cid})
</select>
get一下试试
此时实现点击收藏或取消收藏,并且下次再次展现全部数据的时候会根据用户信息展示是否收藏