把UserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句
同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名。
![](https://img.haomeiwen.com/i16823531/9902b2e848461d73.png)
注解xml配置文件就没有实际意义了
可以删掉
![](https://img.haomeiwen.com/i16823531/3ce7123d33d537ab.png)
UserDao.java
package com.neuedu.dao;
import com.neuedu.domain.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 用户持久层接口
*/
public interface UserDao {
/**
* 查询所有操作
* */
@Select("select * from user")
List<User> findAll();
}
SqlMapConfig.xml
<!-- 用注解配置,此处应该使用class属性指定被注解的dao全限定类名
-->
<mappers>
<mapper class="com.neuedu.dao.UserDao"/>
</mappers>
测试过程:
![](https://img.haomeiwen.com/i16823531/f0741bc9c8eb381f.png)
我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式。
不管使用XML还是注解配置。
但是Mybatis它是支持写dao实现类的。
Dao实现类
![](https://img.haomeiwen.com/i16823531/00eed2da864989c1.png)
![](https://img.haomeiwen.com/i16823531/4f6ac0a0479b2102.png)
![](https://img.haomeiwen.com/i16823531/dd081f4a9157aa57.png)
![](https://img.haomeiwen.com/i16823531/fc72fa1464c22c89.png)
import com.neuedu.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;
public class UserDaoImpl implements UserDao {
private SqlSessionFactory factory;
public UserDaoImpl(SqlSessionFactory factory){
this.factory = factory;
}
public List<User> findAll(){
//1.使用工厂创建SqlSession对象
SqlSession session = factory.openSession();
//2.使用session执行查询所有方法
List<User> users = session.selectList("com.neuedu.dao.UserDao.findAll");
session.close();
//3.返回查询结果
return users;
}
}
package com.neuedu.test;
import com.neuedu.dao.UserDao;
import com.neuedu.dao.impl.UserDaoImpl;
import com.neuedu.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class MybatisTest {
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂创建dao对象
UserDao userDao = new UserDaoImpl(factory);
//4.使用代理对象执行方法
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
//5.释放资源
in.close();
}
}
运行效果:
![](https://img.haomeiwen.com/i16823531/fd39bc392e8d08ee.png)
网友评论