-
小实例,在我学习实践的过程中有个问题:人家是把每个dao里面的接口的映射配置文件(mapper, xml)放在resources下的对应目录下,然后就没有问题。我也那么放但是就是不行,报错,说啥找不到xml,就是接口的配置文件,也不知道为啥,解决办法呢就是和接口放在一起,或者其他什么地方吧,然后加上:(在pom里面)
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> mybatis的映射配置文件没有放在resources下面(放到下面我也也不行), 这样利用maven打包时,就需要修改pom.xml文件,来吧mapper.xml文件一起打包进jar或者war里了, 否则,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)。
1,pom中添加坐标 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> 2,编写实体类(和数据库表尽量一一对应) domain下 3,编写持久层接口 dao下 public interface IAccountDao { List<Account> findAll(); void saveAccount(Account account); } 4,编写持久层接口的映射文件 IUserDao.xml 自己找地方,我是dao.mapper <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mybatis.dao.IAccountDao"> <select id="findAll" resultType="com.mybatis.domain.Account"> select * from account; </select> </mapper> 5,编写 SqlMapConfig.xml 配置文件 resources下 <?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="mysql"> <environment id="mysql"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="url" value="jdbc:mysql://localhost:3306/java"/> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="username" value="zheng"/> <property name="password" value="123456789"/> </dataSource> </environment> </environments> <!-- 告知 mybatis 映射配置的位置 --> <mappers> <!-- 注意是/ 不是. --> <mapper resource="com/mybatis/dao/IUserDao.xml"/> </mappers> </configuration> 6,编写测试类 随表找地方,我是java.test.test下。 /** * * <p>Title: MybatisTest</p> * <p>Description: 测试 mybatis 的环境</p> */ public class MybatisTest { public static void main(String[] args)throws Exception { //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建 SqlSessionFactory 的构建者对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //3.使用构建者创建工厂对象 SqlSessionFactory SqlSessionFactory factory = builder.build(in); //4.使用 SqlSessionFactory 生产 SqlSession 对象 SqlSession session = factory.openSession(); //5.使用 SqlSession 创建 dao 接口的代理对象 IUserDao userDao = session.getMapper(IUserDao.class); //6.使用代理对象执行查询所有方法 List<User> users = userDao.findAll(); for(User user : users) { System.out.println(user); } //7.释放资源 session.close(); in.close(); } }
- 狗屁csdn东西又丢了。为啥就不能解决,还有啊,连个以前的版本都没有,垃圾。