mybatis报错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 除非你在前面有定义了别名