目的
- 解决原生方式中的硬编码
- 简化后期执行SQL
步骤
1, 整体目录结构
2, UserMapper.xml
设置SQL映射文件的namespace属性为Mapper接口全限定名
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--名称空间-->
<mapper namespace="local.content.mapper.UserMapper"><select id="selectAll" resultType="local.content.pojo.User">select * from tb_user;</select>
</mapper>
3,UserMapper接口
local.content下新建mapper包,并在其中定义接口
在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致。
package local.content.mapper;
import local.content.pojo.User;
import java.util.List;//定义mapper代理接口
public interface UserMapper {//查询所有用户List<User> selectAll();
}
4, 核心配置文件
更新UserMapper.xml路径
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--数据库连接信息--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://x.x.x.x:3306/mybatis?useSSL=false&serverTimezone=UTC"/><property name="username" value="mybatis_rw"/><property name="password" value="1234"/></dataSource></environment></environments><mappers><!--映射待执行的sql文件路径-->
<!-- <mapper resource="UserMapper.xml"/>--><mapper resource="local/content/mapper/UserMapper.xml"/></mappers>
</configuration>
5, 编码MyBatisDemon2.java
细节:如果Mapper接口名称和SQL映射文件名称相同,并且在同一个目录下,则可以使用包扫描方式简化SQL映射文件的加载
package local.content.mybatis;
import local.content.mapper.UserMapper;
import local.content.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.InputStream;
import java.util.List;// MyBatis代理开发
public class MyBatisDemo2 {public static void main(String[] args) throws Exception {// 1. 加载配置文件// 2. 创建SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//sqlSessionFactory.getConfiguration().addMapper(local.content.mapper.UserMapper.class);// 3. 创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 4. 执行sql//List<User> users = sqlSession.selectList("test.selectAll");System.out.println("000");// 4 . 获取UserMapper 接口的代理对象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);System.out.println("111");// 使用Mapper代理来查询获取数据List<User> users = userMapper.selectAll();//System.out.println(users);System.out.println(users);// 5. 释放资源sqlSession.close();}}