项目基本结构
PS:resources目录下的com.mybatis.dao中的文件就是mapper
使用xml配置mapper映射
1、mybatis-config.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="mysql">
<!--配置数据库环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"/>
<!--配置数据库连接池-->
<dataSource type="POOLED">
<!--数据库驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--数据库连接-->
<property name="url" value="jdbc:mysql://数据库链接地址/数据库"/>
<!--用户名-->
<property name="username" value="数据库用户名"/>
<!--密码-->
<property name="password" value="数据库用户密码"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置-->
<mappers>
<mapper resource="com/mybatis/dao/UserDao.xml"/>
</mappers>
</configuration>
2、UserDao.xml(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">
<!--配置dao映射-->
<!--namespace:mapper文件映射的dao接口,即 UserDaoImpl.java-->
<mapper namespace="mybatis.daoImpl.UserDao">
<!--
id:映射dao接口中的方法,和方法名完全一致
resultType:返回值类型,和映射方法的返回值类型一致
-->
<select id="queryAll" resultType="mybatis.domain.User">
select * from `user`;
</select>
</mapper>
5、UserDao.java
package mybatis.dao;
import mybatis.domain.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserDao {
List<User> queryAll();
}
使用注解配置mapper映射
1、mybatis-config.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="mysql">
<!--配置数据库环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"/>
<!--配置数据库连接池-->
<dataSource type="POOLED">
<!--数据库驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--数据库连接-->
<property name="url" value="jdbc:mysql://数据库链接地址/数据库"/>
<!--用户名-->
<property name="username" value="数据库用户名"/>
<!--密码-->
<property name="password" value="数据库用户密码"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置-->
<mappers>
<!--使用class属性代替resource-->
<mapper class="mybatis.dao.UserDao"/>
</mappers>
</configuration>
2、UserDao.java中配置注解
package mybatis.dao;
import mybatis.domain.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserDao {
@Select("select * from `user`")
List<User> queryAll();
}
测试mybatis查询
MybatisTest.java文件
package mybatis.test;
import mybatis.dao.UserDao;
import mybatis.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
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 inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// * 2、创建SqlsessionFactory工厂
SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = factoryBuilder.build(inputStream);
// * 3、使用工厂生成SqlSession对象
SqlSession session = factory.openSession();
// * 4、使用SqlSession创建Dao接口的代理对象
UserDao userDao = session.getMapper(UserDao.class);
// * 5、使用代理对象执行方法
List<User> users = userDao.queryAll();
for (User user:users){
System.out.println(user);
}
// * 6、释放资源
session.close();
inputStream.close();
}
}