MyBatis的xml的配置
mybatis配置sqlMapConfig.xml
MyBatis无需编写接口的实现类
<?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="abc"><!-- default可以随便填写-->
<!--环境中定义了,要访问的数据库连接池,事务管理类型-->
<environment id="abc">
<transactionManager type="JDBC"></transactionManager>
<!--数据库连接池-->
<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>
<!--配置映射文件 (就是实体类和数据表建立关联的xml文件)-->
<mappers>
<mapper resource="UserMapper.xml"></mapper>
</mappers>
</configuration>
mybatis配置UserMapper.xml
UserMapper.xml-该文件主要用于编写,sql语句
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--该文件主要用于编写,sql语句-->
<!--namespace:命名空间,用于指定当前mapper文件中操作的SQL属于哪一个接口类下面的方法-->
<mapper namespace="com.houpu.mybatis.mapper.UserMapper">
<!--id:就是命名空间指定类的方法名 注意:要和接口的方法名一致
resultType:是命名空间中指定类的方法返回值类型
尽管findAll返回List<User>值,实质上,集合内部包含的内容就是User
-->
<select id="findAll" resultType="com.houpu.mybatis.bean.User">
select * from user
</select>
</mapper>
测试类
package com.houpu.mybatis.test;
import com.houpu.mybatis.bean.QueryBean;
import com.houpu.mybatis.bean.User;
import com.houpu.mybatis.mapper.UserMapper3;
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 org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
/**
* 测试 注解配置
*/
public class UserTest3 {
private SqlSession sqlSession;
// @before 代表当前方法中的内容,在UserTest3中会首先被执行
@BeforeEach
//在junit
public void before() throws IOException {
//读取核心配置文件 sqlMapConfig.xml得到输入流
InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
//获取工厂构建类
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//1:获取sqlSessionFactory对象 ,需依赖SqlSessionFactoryBuilder
SqlSessionFactory factory = builder.build(is);
//获取sqlSession对象,(等同于jdbc的Connection链接对象)‘
sqlSession = factory.openSession();
}
@AfterEach
//当前类中所有方法执行后执行
public void after(){
sqlSession.commit();
sqlSession.close();
}
@Test
//查询所有
public void testFindAll() throws IOException {
UserMapper3 mapper = sqlSession.getMapper(UserMapper3.class);
List <User> list = mapper.findAll();//findAll()为接口中的构造方法
for (User a:list){
System.out.println(a);
}
}
}