mybatis源码环境的搭建

谁借莪1个温暖的怀抱¢ 2023-01-16 09:37 208阅读 0赞

一:mybatis源码环境的搭建

1:由于最近要学习mybatis源码的框架为3.5,所以先在本地搭建一个debug环境,引入pom依赖

  1. <!--mybatis源码依赖 -->
  2. <dependency>
  3. <groupId>org.mybatis</groupId>
  4. <artifactId>mybatis</artifactId>
  5. <version>3.5.0</version>
  6. </dependency>
  7. <!--Mysql数据库驱动-->
  8. <dependency>
  9. <groupId>mysql</groupId>
  10. <artifactId>mysql-connector-java</artifactId>
  11. <version>5.1.6</version>
  12. <scope>runtime</scope>
  13. </dependency>
  14. <!--test注解依赖 -->
  15. <dependency>
  16. <groupId>junit</groupId>
  17. <artifactId>junit</artifactId>
  18. <version>4.12</version>
  19. <scope>runtime</scope>
  20. </dependency>
  21. <!-- IDEA是不会编译src的java目录的xml文件,所以在Mybatis的配置文件中找不到xml文件!-->
  22. <!-- 在Maven的pom文件中,添加下面代码:-->
  23. <build>
  24. <resources>
  25. <resource>
  26. <directory>src/main/java</directory>
  27. <includes>
  28. <include>**/*.xml</include>
  29. </includes>
  30. </resource>
  31. </resources>
  32. </build>

2:创建表

  1. CREATE TABLE `person` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  3. `name` varchar(32) NOT NULL COMMENT '姓名',
  4. `age` int(11) NOT NULL COMMENT '年龄',
  5. `phone` VARCHAR(16) DEFAULT NULL COMMENT '电话号码',
  6. `email` varchar(255) DEFAULT NULL COMMENT '邮箱',
  7. `address` varchar(255) DEFAULT NULL COMMENT '地址',
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

3:创建mybatis-config.xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!--<typeAliases>-->
  7. <!--<package name="com.mybatis.entity"/>-->
  8. <!--</typeAliases>-->
  9. <environments default="dev">
  10. <environment id="dev">
  11. <transactionManager type="JDBC" />
  12. <dataSource type="POOLED">
  13. <property name="driver" value="com.mysql.jdbc.Driver" />
  14. <property name="url" value="jdbc:mysql://localhost:3306/db_mybatis" />
  15. <property name="username" value="root" />
  16. <property name="password" value="root"/>
  17. </dataSource>
  18. </environment>
  19. </environments>
  20. <mappers>
  21. <mapper resource="com/mybatis/mapper/PersonMapper.xml"/>
  22. </mappers>
  23. </configuration>

4:创建对应的测试类

  1. Person实体类:
  2. package com.mybatis.entity;
  3. /**
  4. * @author lizhangyu
  5. * @date 2021/4/24 21:45
  6. */
  7. public class Person {
  8. private int id;
  9. private String name;
  10. private int age;
  11. private String phone;
  12. private String email;
  13. private String address;
  14. public Person() {
  15. }
  16. public int getId() {
  17. return id;
  18. }
  19. public void setId(int id) {
  20. this.id = id;
  21. }
  22. public String getName() {
  23. return name;
  24. }
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28. public int getAge() {
  29. return age;
  30. }
  31. public void setAge(int age) {
  32. this.age = age;
  33. }
  34. public String getPhone() {
  35. return phone;
  36. }
  37. public void setPhone(String phone) {
  38. this.phone = phone;
  39. }
  40. public String getEmail() {
  41. return email;
  42. }
  43. public void setEmail(String email) {
  44. this.email = email;
  45. }
  46. public String getAddress() {
  47. return address;
  48. }
  49. public void setAddress(String address) {
  50. this.address = address;
  51. }
  52. @Override
  53. public String toString() {
  54. return "Person{" +
  55. "id=" + id +
  56. ", name='" + name + '\'' +
  57. ", age=" + age +
  58. ", phone='" + phone + '\'' +
  59. ", email='" + email + '\'' +
  60. ", address='" + address + '\'' +
  61. '}';
  62. }
  63. }
  64. PersonMapper实体类:
  65. package com.mybatis.dao;
  66. import com.mybatis.entity.Person;
  67. /**
  68. * @author lizhangyu
  69. * @date 2021/4/24 21:44
  70. */
  71. public interface PersonMapper {
  72. int insert(Person p);
  73. }

PersonMapper.xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.mybatis.dao.PersonMapper">
  6. <insert id="insert" parameterType="com.mybatis.entity.Person" >
  7. INSERT INTO person(name, age, phone, email, address)
  8. VALUES(#{name},#{age},#{phone},#{email},#{address})
  9. </insert>
  10. </mapper>
  11. SqlSessionFactoryUtil实体类:
  12. package com.mybatis.util;
  13. import org.apache.ibatis.io.Resources;
  14. import org.apache.ibatis.session.SqlSessionFactory;
  15. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  16. import java.io.IOException;
  17. import java.io.Reader;
  18. /**
  19. * @author lizhangyu
  20. * @date 2021/4/24 21:47
  21. */
  22. public class SqlSessionFactoryUtil {
  23. /**
  24. * 加载配置文件并获取会话
  25. * @return
  26. */
  27. public static SqlSessionFactory getSqlSessionFactory() {
  28. String path = "mybatis-config.xml";
  29. SqlSessionFactory sqlSessionFactory = null;
  30. try {
  31. Reader reader = Resources.getResourceAsReader(path);
  32. sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  33. }catch (IOException e) {
  34. System.out.println("获取配置文件失败");
  35. e.printStackTrace();
  36. }
  37. return sqlSessionFactory;
  38. }
  39. }

5:测试类

  1. TestFactory实体类:
  2. package session;
  3. import com.mybatis.dao.PersonMapper;
  4. import com.mybatis.entity.Person;
  5. import com.mybatis.util.SqlSessionFactoryUtil;
  6. import org.apache.ibatis.session.SqlSession;
  7. import org.apache.ibatis.session.SqlSessionFactory;
  8. import org.junit.Test;
  9. /**
  10. * @author lizhangyu
  11. * @date 2021/4/24 21:59
  12. */
  13. public class TestFactory {
  14. @Test
  15. public void test() {
  16. SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
  17. SqlSession sqlSession = sqlSessionFactory.openSession();
  18. PersonMapper personDao = sqlSession.getMapper(PersonMapper.class);
  19. Person person = new Person();
  20. person.setAddress("深圳市");
  21. person.setAge(27);
  22. person.setEmail("1312312312@qq.com");
  23. person.setName("李四");
  24. person.setPhone("12312313123");
  25. personDao.insert(person);
  26. System.out.println(person.toString());
  27. sqlSession.commit();
  28. sqlSession.close();
  29. }
  30. }

运行结果:

  1. Person{id=0, name='李四', age=27, phone='12312313123', email='1312312312@qq.com', address='深圳市'}
  2. Process finished with exit code 0

20210425001550477.png

发表评论

表情:
评论列表 (有 0 条评论,208人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JDK环境

    > 本教程是用idea搭建,jdk源码就在jdk安装路径下的src.zip中,解压即可用。 第一步:新建项目 打开IDEA,按如下步骤新建一个简单Java项目 cre

    相关 mybatis环境

    前言 mybatis在众多的数据持久化框架中应该说是目前使用最多的,其优秀的设计和底层封装,值得很多开发人员进行学习,下面让我们先来构建一下mybatis的源码阅读环境吧

    相关 dubbo环境

    dubbo由于很多jar包无法下载到而在导入后存在大量错误。这里记录一下解决方案。         1、通过maven安装alibaba open parent。地址http