spring mvc--示例

该博客详细介绍了如何在Java中实现数据库的插入和删除操作,用于用户收藏功能。通过XML配置文件和DAO接口,实现了收藏和取消收藏的数据库操作。同时,展示了如何查询用户是否已收藏某一内容,包括在Controller层处理AJAX请求并返回结果。在遇到问题时,调整了XML文件中的SQL语句以指定返回类型,从而解决了错误。
摘要由CSDN通过智能技术生成

插入和删除数据库数据

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一下试试
在这里插入图片描述
此时实现点击收藏或取消收藏,并且下次再次展现全部数据的时候会根据用户信息展示是否收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值