MyBatis环境搭建
最近开始准备学习MyBatis的源码,第一件事当然就是搭建环境。
JDK:1.8
IDE:Idea
mysql:8.0.11
首先需要安装Git,正常下载安装就可以,然后需要在Idea中配置一下,如下 图:
配置完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之旅途。