项目结构:
目的:解决硬编码问题,更友好的调用封装好sql语句的接口方法
例:原生方法selectList()执行sql,还需要硬编码test.selectAll
List users = sqlSession.selectList(“test.selectAll”);
设置mapper代理步骤
UserMapper.xml(相当于实现UserMapper接口)
<?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">
<!--
namespace="com.niujl.mapper.UserMapper":名称空间地址要与定义sql语句的接口UserMapper一致
id="selectAll":相当于实现UserMapper接口的方法
-->
<mapper namespace="com.niujl.mapper.UserMapper">
<select id="selectAll" resultType="com.niujl.pojo.User">
select *
from tb_user;
</select>
</mapper>
UserMapper.java(sql语句接口定义)
package com.niujl.mapper;
import com.niujl.pojo.User;
import java.util.List;
public interface UserMapper {
List<User> selectAll();
}
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>
<typeAliases>
<!-- 这个配置使得UserMapper.xml的resultType可以直接写类名User-->
<package name="com.niujl.pojo"/>
</typeAliases>
<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:///mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载sql的映射文件-->
<!-- <mapper resource="com/niujl/mapper/UserMapper.xml"/>-->
<package name="com.niujl.mapper"/>
</mappers>
</configuration>
MyBatisDemo2.java(具体操作)
package com.niujl;
import com.niujl.mapper.UserMapper;
import com.niujl.pojo.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.IOException;
import java.io.InputStream;
import java.util.List;
public class MyBatisDemo2 {
public static void main(String[] args) throws IOException {
//1、加载核心配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 2、获取SqlSession对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
// 3、执行sql
// List<User> users = sqlSession.selectList("test.selectAll");
// System.out.println(users);
// 3、1获取UserMapper接口代理的对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.selectAll();
System.out.println(users);
// 4、释放资源
sqlSession.close();
}
}