mybatis中mappers配置问题

duwei1990 2013-12-19 03:02:46
mybatis中mappers配置:

<mappers>
<!-- <mapper resource="com/hxtg/sqlmapper/User.xml" /> -->
<package name="com.hxtg.dao"/><!-- 用这种方式就不行了呢? -->
</mappers>


这是官网的:

<!-- Register all interfaces in a package as mappers -->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>


我的测试代码:

String resource = "Mybatis.xml";
SqlSession session = null;
try {
InputStream input = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(input);
session = sqlSessionFactory.openSession();

UserDao userDao = session.getMapper(UserDao.class);
List<User> users = userDao.getUserList();
for (User user : users) {
System.out.println(user.getAccountid());
}
System.out.println("SUCCESS");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
session.close();
}
...全文
3871 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
我爱紫色 2016-03-07
  • 打赏
  • 举报
回复
引用 14 楼 qq_29551057 的回复:
我也和楼主一样的问题,目前解决了,由于maven 特性问题,默认是只加载resources下面的资源文件,所以如果没有做处理的话是不会加载任何包下面的资源文件的处理如下:pom.xml <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> </build> 另外一个问题是,mybatis的,正和楼上的说的一样,需要和dao同包才可以被加载.同时解决这两个问题就运行成功了.
非常感谢,我也遇到了一样的问题!!安照你的方法终于解决了!!! 不懂maven得加载方式真的伤不起啊!!!
qq_29551057 2015-11-02
  • 打赏
  • 举报
回复
我也和楼主一样的问题,目前解决了,由于maven 特性问题,默认是只加载resources下面的资源文件,所以如果没有做处理的话是不会加载任何包下面的资源文件的处理如下:pom.xml <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> </build> 另外一个问题是,mybatis的,正和楼上的说的一样,需要和dao同包才可以被加载.同时解决这两个问题就运行成功了.
最勇敢的鸟 2014-01-03
  • 打赏
  • 举报
回复
让dao层的接口和xml文件保持同名,同路径,就可以了
最勇敢的鸟 2014-01-03
  • 打赏
  • 举报
回复

按这样的结构
duwei1990 2013-12-27
  • 打赏
  • 举报
回复
引用 9 楼 sunli880127 的回复:
我都试通了哈哈,楼主,你只要dao和那个xml的路径完全相同就可以了。比如,都在com.xxx.dao下,当然你可以代码放在java下,而xml放在resource下,但相对classpath的路径要一致,我已经成功了,楼主再试试
一会试试去
duwei1990 2013-12-27
  • 打赏
  • 举报
回复
引用 9 楼 sunli880127 的回复:
我都试通了哈哈,楼主,你只要dao和那个xml的路径完全相同就可以了。比如,都在com.xxx.dao下,当然你可以代码放在java下,而xml放在resource下,但相对classpath的路径要一致,我已经成功了,楼主再试试
能给个例子么?我的还是不行
Inhibitory 2013-12-26
  • 打赏
  • 举报
回复
我这MyBatis3.2.1不是这么配置Mapper的。
Mapper的路径是放在namespace里,如图
最勇敢的鸟 2013-12-26
  • 打赏
  • 举报
回复
我都试通了哈哈,楼主,你只要dao和那个xml的路径完全相同就可以了。比如,都在com.xxx.dao下,当然你可以代码放在java下,而xml放在resource下,但相对classpath的路径要一致,我已经成功了,楼主再试试
duwei1990 2013-12-26
  • 打赏
  • 举报
回复
引用 4 楼 sunli880127 的回复:
我也遇到相同问题,写成 <mapper class="com.sl.dao.payMntTypeMapper"/> 也不行,非要写成<mapper resource="mappers/PayMntCategoryMapper.xml"/>才可以,奇怪了
你的项目中mybatis jar包是哪个版本的?
最勇敢的鸟 2013-12-26
  • 打赏
  • 举报
回复
我也遇到相同问题,写成 <mapper class="com.sl.dao.payMntTypeMapper"/> 也不行,非要写成<mapper resource="mappers/PayMntCategoryMapper.xml"/>才可以,奇怪了
Inhibitory 2013-12-26
  • 打赏
  • 举报
回复
是不是生成Reader时Resources.getResourceAsReader(path)这里对不同的路径需要不同的方法?
duwei1990 2013-12-26
  • 打赏
  • 举报
回复
引用 6 楼 Inhibitory 的回复:
我这MyBatis3.2.1不是这么配置Mapper的。 Mapper的路径是放在namespace里,如图
MyBatis 到去找映射文件的几种方式,我只能试通第一种,下面3种都没通过。
forgetsam 2013-12-19
  • 打赏
  • 举报
回复
那就是这个包的地址有错或者包下面的接口有错。
duwei1990 2013-12-19
  • 打赏
  • 举报
回复
官网上的是个SNAPSHOT,我用的3.2.3版本的
forgetsam 2013-12-19
  • 打赏
  • 举报
回复
你先看它是那个版本加上的属性,确定你的jar包和配置文件是一个版本的。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧