ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

重学Mybatis从入门到源码之二---搭建一个Mybatis项目

2020-10-15 13:31:45  阅读:191  来源: 互联网

标签:xml 重学 sqlSessionFactory mybatis 源码 mysql Mybatis public


  这篇开始搭建一个Mybatis项目。

  新建一个普通的maven项目,大概流程就是创建一个普通的maven项目,创建完成后删除src目录,把当前项目当作父项目,编写pom文件。

   我们需要导入mybatis的依赖和mysql的依赖,pom.xml内容为:

  <!-- 父工程 -->
  <groupId>com.wy.studys</groupId>
  <artifactId>Mybatis-Study</artifactId>
  <version>1.0-SNAPSHOT</version>

  <!--导入依赖-->
  <dependencies>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.6</version>
    </dependency>
    <!--mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.19</version>
    </dependency>

    <!--junit-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

父工程创建完成后,开始创建子项目,流程是创建一个普通的maven项目,项目名称为mybatis-01,则父工程的pom.xml中会自动添加module的信息:

  <modules>
    <module>mybatis-01</module>
  </modules>

子工程里面也会有父工程的信息:

    <parent>
        <artifactId>Mybatis-Study</artifactId>
        <groupId>com.wy.studys</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

 

然后在src-resource里面编写核心配置文件mybatis-config.xml,用于获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)内容为:

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
  <!--这里需要将mapper文件注册,否则会抛出 配置文件没有注册的异常--> <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
  </mappers> 
</configuration>

接下来就是编写mybatis工具类通过sqlSessionFactory获取sqlSession。

/**
 * 获取sqlSession
 */
public class MybatisUtil {
    public static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            String resource = "mybatis-config.xml";//可以直接获取resource路径下的文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //从sqlSessionFactory中获取SqlSession的实例
    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

 

后面就可以编写代码了。

实体类 省略。

Mapper接口:

public interface UserMapper {
    public List<User> getUserList();
}

接口实现类**Mapper.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.candice.mapper.UserMapper">
    <select id="UserMapper" resultType="com.candice.pojo.User">
        select * from user;
    </select>
</mapper>

 编写测试类:

/**
 * 测试类
 */
public class UserMapperTest {
    @Test
    public void test() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> list = mapper.getUserList();
        for (User user : list) {
            System.out.println("user====" + user.toString()

            );
        }

    }
}

启动后可能报的错:

mysql驱动问题:将

com.mysql.jdbc.Driver  改成
com.mysql.cj.jdbc.Driver

mysql的servertimezone问题,在url中指定时区:

<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>

找不到mapper.xml文件:

resources目录下的文件路径直接写:
<mapper resource="mapper/UserMapper.xml"/>

代码结构图:

 

 


这种配置还是很繁琐的,真实项目中应该都不需要这种配置,等后面再说吧。




标签:xml,重学,sqlSessionFactory,mybatis,源码,mysql,Mybatis,public
来源: https://www.cnblogs.com/yunyunde/p/13816421.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有