mybatis源码环境的搭建
一:mybatis源码环境的搭建
1:由于最近要学习mybatis源码的框架为3.5,所以先在本地搭建一个debug环境,引入pom依赖
<!--mybatis源码依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<!--Mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!--test注解依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>runtime</scope>
</dependency>
<!-- IDEA是不会编译src的java目录的xml文件,所以在Mybatis的配置文件中找不到xml文件!-->
<!-- 在Maven的pom文件中,添加下面代码:-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
2:创建表
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(32) NOT NULL COMMENT '姓名',
`age` int(11) NOT NULL COMMENT '年龄',
`phone` VARCHAR(16) DEFAULT NULL COMMENT '电话号码',
`email` varchar(255) DEFAULT NULL COMMENT '邮箱',
`address` varchar(255) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';
3:创建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>-->
<!--<package name="com.mybatis.entity"/>-->
<!--</typeAliases>-->
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db_mybatis" />
<property name="username" value="root" />
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mybatis/mapper/PersonMapper.xml"/>
</mappers>
</configuration>
4:创建对应的测试类
Person实体类:
package com.mybatis.entity;
/**
* @author lizhangyu
* @date 2021/4/24 21:45
*/
public class Person {
private int id;
private String name;
private int age;
private String phone;
private String email;
private String address;
public Person() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
", email='" + email + '\'' +
", address='" + address + '\'' +
'}';
}
}
PersonMapper实体类:
package com.mybatis.dao;
import com.mybatis.entity.Person;
/**
* @author lizhangyu
* @date 2021/4/24 21:44
*/
public interface PersonMapper {
int insert(Person p);
}
PersonMapper.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="com.mybatis.dao.PersonMapper">
<insert id="insert" parameterType="com.mybatis.entity.Person" >
INSERT INTO person(name, age, phone, email, address)
VALUES(#{name},#{age},#{phone},#{email},#{address})
</insert>
</mapper>
SqlSessionFactoryUtil实体类:
package com.mybatis.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
/**
* @author lizhangyu
* @date 2021/4/24 21:47
*/
public class SqlSessionFactoryUtil {
/**
* 加载配置文件并获取会话
* @return
*/
public static SqlSessionFactory getSqlSessionFactory() {
String path = "mybatis-config.xml";
SqlSessionFactory sqlSessionFactory = null;
try {
Reader reader = Resources.getResourceAsReader(path);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch (IOException e) {
System.out.println("获取配置文件失败");
e.printStackTrace();
}
return sqlSessionFactory;
}
}
5:测试类
TestFactory实体类:
package session;
import com.mybatis.dao.PersonMapper;
import com.mybatis.entity.Person;
import com.mybatis.util.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
/**
* @author lizhangyu
* @date 2021/4/24 21:59
*/
public class TestFactory {
@Test
public void test() {
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession();
PersonMapper personDao = sqlSession.getMapper(PersonMapper.class);
Person person = new Person();
person.setAddress("深圳市");
person.setAge(27);
person.setEmail("1312312312@qq.com");
person.setName("李四");
person.setPhone("12312313123");
personDao.insert(person);
System.out.println(person.toString());
sqlSession.commit();
sqlSession.close();
}
}
运行结果:
Person{id=0, name='李四', age=27, phone='12312313123', email='1312312312@qq.com', address='深圳市'}
Process finished with exit code 0
还没有评论,来说两句吧...