mybatis案例--mapper代理开发
mybatis案例之mapper代理开发
在使用mybatis的代理开发的时候,需要遵循的要求如下
- 定义接口,要求接口名和映射配置文件名一致
- 接口必须和映射配置文件在同一级包中
- 映射配置文件的namespace需要和接口的全类名一致
- 映射配置文件的sql语句要和接口中的抽象方法保持一致
- id的值和接口的抽象方法名一致
- resultType和抽象方法返回值保持一致
第一步,编写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>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--数据库连接信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///db1?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--关联映射配置文件-->
<!-- 我们只需执行我们的映射配置文件所在的包(路径),不需要指定具体的文件 -->
<!--<mapper resource="UserMapper.xml"></mapper>-->
<package name="com.itheima.mapper"/>
</mappers>
</configuration>
第二步:编写BrandMapper接口
package com.itheima.mapper;
import com.itheima.pojo.Brand;
import java.util.List;
public interface BrandMapper {
/**
* 查询所有
* @return
*/
List<Brand> selectAll();
}
第三步,编写BrandMapper映射文件
-
namespace中要填写接口的全路径名
-
resultType中写上selectAll方法的返回值类型,应该和接口中的方法返回值一致
-
id的值要和接口中的方法名一致
<?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.itheima.mapper.BrandMapper">
<!-- 跟user表相关的sql语句-->
<select id="selectAll" resultType="com.itheima.pojo.Brand">
select *
from tb_brand
</select>
</mapper>
第四步,编写测试类进行测试
package com.itheima;
import com.itheima.mapper.BrandMapper;
import com.itheima.pojo.Brand;
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.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class test {
@Test
public void test01() throws IOException {
//读取核心配置文件
InputStream in = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//去获取连接 得到sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取mapper对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
//执行语句
List<Brand> brands = brandMapper.selectAll();
for (Brand brand : brands) {
System.out.println(brand);
}
//释放资源
sqlSession.close();
}
}
运行结果测试: