zoukankan      html  css  js  c++  java
  • 重学Mybatis从入门到源码之二---搭建一个Mybatis项目

      这篇开始搭建一个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"/>

    代码结构图:


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




  • 相关阅读:
    前端3
    前端-1
    第三十七章 MYSQL(二)
    第三十六章 MYSQL语句(一)
    第三十五 MYSQL 语句
    数字转换成中文大小写、金额大小写
    NPOI随笔——图片在单元格等比缩放且居中显示
    NPOI随笔——单元格样式CellStyle问题
    C++、C#、VB各语言日志代码
    .NET认识与理论总结
  • 原文地址:https://www.cnblogs.com/yunyunde/p/13816421.html
Copyright © 2011-2022 走看看