MyBatis源码学习(1)

本文介绍如何搭建MyBatis源码的学习环境,包括安装必要的软件、配置开发工具及构建MyBatis项目等步骤,并提供了一个简单的示例程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis环境搭建

最近开始准备学习MyBatis的源码,第一件事当然就是搭建环境。
JDK:1.8
IDE:Idea
mysql:8.0.11
首先需要安装Git,正常下载安装就可以,然后需要在Idea中配置一下,如下 图:
将git的安装地址写一下就行
配置完Git,就可以开始在GitHub上下载代码了,MyBtais是MAVEN构建的,所以还要再配置一下MAVEN,这个就不说了,相信应该大家都会。
MyBatis有个parent的依赖,所以先用Git来下载parent,地址:https://github.com/mybatis/parent,直接复制然后再Idea里的File->New->Project from Version Control->git,如图:
选择好路径导入项目
如果构建完成后pom.xml中有plugin报错,直接注释掉就好,然后install。
然后下载MyBbatis的代码,地址:https://github.com/tuguangquan/mybatis
导入方式与上同,下载的版本要有一个自己的版本号修改pom.xml的

<parent>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-parent</artifactId>
    <version>31-SNAPSHOT</version>
    <relativePath>../parent/pom.xml</relativePath>
  </parent>

  <artifactId>mybatis</artifactId>
  <version>3.3.0-aaa</version>
  <packaging>jar</packaging>

version随便加一个后缀就行,也要引入你刚才下载的parent的版本,同理如果plugin报错,注掉就好。
至此MyBatis的源码环境就算搭建完成,需要注意的是因为你要debug Mybatis的源码,所以你还要新建一个项目,然后把这个MyBatis依赖加入进去,然后才好开始debug,所以接下来新建一个MAVEN项目,引入MyBatis 然后新建数据库,代码主要就是一个pojo类

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer age;

    @Override
    public String toString() {
        return "id:"+id+",username:"+username+",password:"+password+",age:"+age;
    }

}

一个mapper接口,

public interface UserMapper {
    public User findUserById(int id);
    public List<User> findUserAll();
    public void insertUser(User user);
    public void deleteUserById(int id);
    public void updateUserPassword(User user);
}

一个config配置文件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>
       <settings>
          <!-- 查询时,关闭关联对象即时加载以提高性能 -->
          <setting name="lazyLoadingEnabled" value="true" />
          <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 -->
          <setting name="aggressiveLazyLoading" value="false" />
       </settings> 
    <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="数据库url"/>
                <property name="username" value="用户名"/>
                <property name="password" value="密码"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

还有一个UserMapper.xml,

<?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属性,不然会报错,可看做包名-->
<mapper namespace="com.yxc.mapper.UserMapper">

 <select id="findUserById" parameterType="int" resultType="com.yxc.pojo.User">
        select * from user where id = #{id}
    </select>
    <select id="findUserAll" resultType="com.yxc.pojo.User">
        select * from user
    </select>
    <insert id="insertUser" parameterType="com.yxc.pojo.User">
        insert into user(username,password,age) values(#{username},#{password},#{age})
    </insert>
    <delete id="deleteUserById" parameterType="int">
        delete from user where id=#{id}
    </delete>
    <update id="updateUserPassword" parameterType="com.yxc.pojo.User">
        update user set password=#{password} where id=#{id}
    </update>
</mapper>

,然后建一个主类,main方法里写访问的代码,

public class App {
public SqlSession openSqlSession() {
            String resource = "mybatis-config.xml";
            InputStream inputStream = null;
            try {
                inputStream = Resources.getResourceAsStream(resource);
            } catch (IOException e) {
                e.printStackTrace();
            }
             SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
             SqlSession session = factory.openSession();
             return session;
        }
  public void findUserByID(SqlSession session) throws Exception{     
            //--------DefaultSqlSession-------
            UserMapper userMapper = session.getMapper(UserMapper.class);
            User user = userMapper.findUserById(1);
            System.out.println(user.toString());
            //--------------
            session.close();
        }   
        public static void main(String[] args) throws Exception {
            App main = new App();
            SqlSession session = main.openSqlSession();
            main.findUserByID(session);
        }
}   

然后就可以开始debug之旅途。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值