mybatis报错org.apache.ibatis.binding.BindingException:

作者&投稿:啜送 (若有异议请与网页底部的电邮联系)
org.apache.ibatis.binding.BindingException这异常怎么解决~

按以下步骤一一执行:
1:检查xml文件所在的package名称是否和interface对应的package名称一一对应
2:检查xml文件的namespace是否和xml文件的package名称一一对应
3:检查函数名称能否对应上
4:去掉xml文件中的中文注释
5:随意在xml文件中加一个空格或者空行然后保存(触发了ide的自动编译功能。由于xml文件在编译的时候,不一定总能立即从源目录复制到class文件的编译目录(MyEclipse经常出这个问题),有时候你源目录中的xml文件已经修改好了,而class所在的目录里面还是旧的。因此真正确定有效的方式是将正确的xml文件复制到class输出目录。)

按以下步骤一一执行:
1:检查xml文件所在的package名称是否和interface对应的package名称一一对应
2:检查xml文件的namespace是否和xml文件的package名称一一对应
3:检查函数名称能否对应上
4:去掉xml文件中的中文注释
5:随意在xml文件中加一个空格或者空行然后保存(触发了ide的自动编译功能。由于xml文件在编译的时候,不一定总能立即从源目录复制到class文件的编译目录(MyEclipse经常出这个问题),有时候你源目录中的xml文件已经修改好了,而class所在的目录里面还是旧的。因此真正确定有效的方式是将正确的xml文件复制到class输出目录。)

原因:缺少xml文件造成的。

1、在pom.xml build标签内加入 resources配置,不过滤配置文件即可,首先输入代码:

 <build>

<!--将mapper文件打包进去-->

<resources>

<resource>

                <!--指定根目录 到源文件夹 一般如下-->

<directory>src/main/java</directory>

2、然后输入下方的代码:

<includes>

<include>**/*.properties</include>

<include>**/*.xml</include>

</includes>

<filtering>false</filtering>

</resource>

</resources>

</build>

3、然后重新编译,出现xml文件,运行正常。



import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.gson.reflect.TypeToken;
import com.lingnet.app.tv.R;
import com.lingnet.app.tv.adapter.LeftTypeListAdapter;
import com.lingnet.app.tv.adapter.TopTypeListAdapter;
import com.lingnet.app.tv.adapter.VenueAdapter;
import com.lingnet.app.tv.bean.BaseBean;
import com.lingnet.app.tv.constant.Const;
import com.lingnet.app.tv.constant.RequestType;
import com.lingnet.app.tv.view.SpacesItemDecoration;
import com.yanzhenjie.recyclerview.swipe.SwipeItemClickListener;
import com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;
import retrofit2.Call;

/**
 */
public class TvWisdomVenueFragment extends BaseFragment {

    @BindView(R.id.recyclerview_navi_left)
    RecyclerView recyclerViewLeft;
    @BindView(R.id.recyclerview_navi_top)
    RecyclerView recyclerViewTop;
    TopTypeListAdapter mTopTypeListAdapter;
    LeftTypeListAdapter mLeftTypeListAdapter;

    @BindView(R.id.recyclerview)
    SwipeMenuRecyclerView recyclerView;
    VenueAdapter venueAdapter;

    int currentPage = 0;
    String categoryId = "";


    public TvWisdomVenueFragment() {
        // Required empty public constructor
    }

    /**
     */
    public static TvWisdomVenueFragment newInstance() {
        TvWisdomVenueFragment fragment = new TvWisdomVenueFragment();
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_tv_wisdom_venue, container, false);
        ButterKnife.bind(this, v);
        initRecyclerViewRecommand();
        sendTypeRequest();
        return v;
    }

    private void initRecyclerViewRecommand() {

        HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
        stringIntegerHashMap.put(SpacesItemDecoration.TOP_DECORATION, 0);//top间距
        stringIntegerHashMap.put(SpacesItemDecoration.BOTTOM_DECORATION, 0);//底部间距
        stringIntegerHashMap.put(SpacesItemDecoration.LEFT_DECORATION, 0);//左间距
        stringIntegerHashMap.put(SpacesItemDecoration.RIGHT_DECORATION, 0);//右间距
        SpacesItemDecoration itemDecoration = new SpacesItemDecoration(stringIntegerHashMap);


        final GridLayoutManager  mGridLayoutManager=new GridLayoutManager(mActivity,2);
        recyclerView.setLayoutManager(mGridLayoutManager);
        recyclerView.setHasFixedSize(true);
        recyclerView.setItemAnimator(null);
        recyclerView.setNestedScrollingEnabled(false);
//        recyclerView.addItemDecoration(new DefaultItemDecoration(ContextCompat.getColor(mActivity, R
//                .color.divider)));
        recyclerView.setSwipeItemClickListener(new SwipeItemClickListener() {
            @Override
            public void onItemClick(View itemView, int position) {
                Map<String, String> data = venueAdapter.dataList.get(position);
                Bundle bundle = new Bundle();
                bundle.putString("id", data.get("id"));
                startNextActivity(bundle, ChanggDetailActivity.class);
            }
        });
//        recyclerView.useDefaultLoadMore();
//        recyclerView.setLoadMoreListener(mLoadMoreListener);
        venueAdapter = new VenueAdapter(mActivity);
        venueAdapter.setHasStableIds(true);
        recyclerView.setAdapter(venueAdapter);
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                if(newState == RecyclerView.SCROLL_STATE_IDLE){
                    int lastVisiblePosition = mGridLayoutManager.findLastVisibleItemPosition();
                    if(lastVisiblePosition >= mGridLayoutManager.getItemCount() - 1){
                        currentPage++;
                        sendRequest();
//                        System.out.println("====自动加载");
                    }
                }
            }
        });
        //
        recyclerViewLeft.setLayoutManager(new LinearLayoutManager(mActivity));
        recyclerViewLeft.setHasFixedSize(true);
        recyclerViewLeft.setNestedScrollingEnabled(false);
        recyclerView.addItemDecoration(itemDecoration);
        mLeftTypeListAdapter = new LeftTypeListAdapter(mActivity);
        mLeftTypeListAdapter.setmIOnLeftClicListener(new LeftTypeListAdapter.IOnLeftClicListener() {
            @Override
            public void onLeftClick(int post) {
                mLeftTypeListAdapter.setSelectPos(post);
                mLeftTypeListAdapter.notifyDataSetChanged();

                Map<String, String> data = mLeftTypeListAdapter.dataList.get(post);
                categoryId = data.get("name");
                onRefresh();
            }
        });
        recyclerViewLeft.setAdapter(mLeftTypeListAdapter);
        //
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mActivity, LinearLayoutManager.HORIZONTAL,
                false);
        recyclerViewTop.setLayoutManager(linearLayoutManager);
        recyclerViewTop.setHasFixedSize(true);
        recyclerViewTop.setNestedScrollingEnabled(false);

        mTopTypeListAdapter = new TopTypeListAdapter(mActivity);
        recyclerViewTop.setAdapter(mTopTypeListAdapter);
    }

    /**
     * 加载更多。
     */
    private SwipeMenuRecyclerView.LoadMoreListener mLoadMoreListener = new SwipeMenuRecyclerView.LoadMoreListener() {
        @Override
        public void onLoadMore() {
            currentPage++;
            sendRequest();
        }
    };

    private void onRefresh() {
        venueAdapter.notifyDataSetChanged(null);//先清空数据
        currentPage = 0;
        sendRequest();
    }

    private void sendTypeRequest() {
        Call<BaseBean> call = client.venueCategoryzh();
        sendRequest(call, RequestType.venueCategoryzh, false);
    }

    private void sendRequest() {
        Map<String, String> params = new HashMap<>();
        params.put("pageSize", "" + Const.PAGESIZE);
        params.put("pageIndex", "" + currentPage);
        params.put("categoryId", categoryId);
        Call<BaseBean> call = client.venueList(params);
        sendRequest(call, RequestType.venueList, true);
    }

    @Override
    public void requestCallBack(String dataJson, RequestType type) {
        switch (type) {
            case venueCategoryzh:
                Map<String, String[]> data = mGson.fromJson(dataJson, new TypeToken<Map<String, String[]>>() {
                }.getType());
                String[] types = data.get("name");
                if (types != null && types.length > 0) {
                    categoryId = types[0];
                    List<Map<String, String>> dataList = new ArrayList<>();
                    for (String s : types) {
                        Map<String, String> temp = new HashMap<>();
                        temp.put("name", s);
                        dataList.add(temp);
                    }
                    mLeftTypeListAdapter.setSelectPos(0);
                    mLeftTypeListAdapter.notifyDataSetChanged(dataList);
                }
                sendRequest();
                break;
            case venueList:
                List<HashMap<String, String>> dataList = mGson.fromJson(dataJson, new
                        TypeToken<List<HashMap<String, String>>>() {
                        }.getType());
                venueAdapter.notifyDataSetChanged(dataList);

                recyclerView.loadMoreFinish((dataList == null || dataList.size() == 0), true);
                break;
        }
    }

    @Override
    public void requestFailed(String error, RequestType type) {
        recyclerView.loadMoreError(0, "请求网络失败");
    }

}


ibatis的Closing non transactional SqlSession异常怎么办?
答:[org.apache.ibatis.session.defaults.DefaultSqlSession@7271d362];WARN - Handler execution resulted in exception: null;应该是xml配置的问题,但是我找不出来;<?xml version="1.0" encoding="UTF-8"?>;<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN";"http://my...

mybatis中怎么创建sqlsession
答:<code class="hljs nimrod"><bean id=<span class="hljs-string">"sqlSessionFactory" class=<span class="hljs-string">"org.mybatis.spring.SqlSessionFactoryBean"> <property name=<span class="hljs-string">"dataSource" <span class="hljs-keyword">ref=<span class="hljs-string">"...

hibernate和mybatis的区别
答:第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:http://www.mybatis.org/core/zh/index.html Hibernate参考资料: http://docs.jboss.org/hibernate...

MyBatis3 连接 Oracle 11g 数据库问题
答:ojdbc不好用,我也是怎么弄都不行,后来用的是啥忘记了,不过不要用oracle自带的就行。目前可以正常连接Oracle8、9、10各个版本,11g应该也没有问题。如果还没有解决,我明天上班再看看。

Java框架MyBatis工作流程是怎样的?
答:<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.oumyye.mapping.UserMapping"> <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复 使用...

spring mvc mybatis 整合 大体步骤
答:a:对数据库4个基本信息的配置, b:引入mapper.xml文件。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><environments default="development"><environment id="development">...

mybatis #{}没有数据返回,用${}就有数据返回
答:<select id="getList" parameterType="ActRebate" resultMap="actRebateResultMap"> select t.* from t_rule_rebate t where (merchantId IS null OR t.merchantid = #{merchantId} )AND (ztbz IS null OR trim(t.ztbz) = #{ztbz})AND (type IS null OR trim(t.type) = #{type})<...

Mybatis的基础和高级查询应用实践
答:将分为3部分介绍:java# #数据库# #开发# #后端 快速入门查看官网 :http://www.mybatis.org/mybatis-3 1.添加Mybatis的坐标(添加pom.xml依赖)2.创建数据库表 + 编写实体 表设计和实体根据自己业务实际编写即可 3.编写映射文件Mapper.xml与标签说明 4.编写核心文件SqlMapConfig.xml 5.使用 :...

怎么搭建springmvc和mybatis
答:<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref = "dataSource" p:configLocation = "classpath:sqlMapConfig.xml" /> <!-- 采用spring与mybatis整合的第二种方法 --> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constr...

mybatis做简单的查询怎么总是报空指针
答:根据DEBUG 11-15 23:39:50,458 <== Total: 1 (BaseJdbcLogger.java:139)可以看到有查询到结果的,只是赋值时候没对应 resultType="Teacher" 这里的Teacher路径前缀加上,就像com.mxl.bean.TeacherMapper 除非你在前面有定义了别名