Idea搭建Mybatis入门案例-----遇到的小问题

╰半橙微兮° 2021-12-10 00:45 423阅读 0赞

1.创建一个maven项目,学习mybatis的框架功能的话,建议一个空的maven工程项目。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MjY0OTk5_size_16_color_FFFFFF_t_70

二,在pom.xml中导入相应的jar包依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>cn.waggag</groupId>
  7. <artifactId>MybatisDemo1</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <packaging>jar</packaging>
  10. <dependencies>
  11. <!--Mybatis的依赖-->
  12. <dependency>
  13. <groupId>org.mybatis</groupId>
  14. <artifactId>mybatis</artifactId>
  15. <version>3.4.5</version>
  16. </dependency>
  17. <!--mysql数据库连接器-->
  18. <dependency>
  19. <groupId>mysql</groupId>
  20. <artifactId>mysql-connector-java</artifactId>
  21. <version>8.0.16</version>
  22. </dependency>
  23. <dependency>
  24. <groupId>log4j</groupId>
  25. <artifactId>log4j</artifactId>
  26. <version>1.2.16</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>junit</groupId>
  30. <artifactId>junit</artifactId>
  31. <version>4.12</version>
  32. </dependency>
  33. </dependencies>
  34. </project>

三、创建实体类和接口

3.1、实体类

  1. package cn.waggag.domain;
  2. import java.io.Serializable;
  3. import java.util.Date;
  4. /**
  5. * @description: User的实体类
  6. * @author: waggag
  7. * @time: 2019/7/15 0:14
  8. * @Company http://www.waggag.cn
  9. */
  10. public class User implements Serializable {
  11. private Integer id;
  12. private String username;
  13. private Date birthday;
  14. private String sex;
  15. private String address;
  16. //setter和getter方法
  17. }

3.2、接口

  1. package cn.waggag.mapper;
  2. import cn.waggag.domain.User;
  3. import java.util.List;
  4. /**
  5. * @description:用户的持久层接口
  6. * @author: waggag
  7. * @time: 2019/7/15 0:18
  8. * @Company http://www.waggag.cn
  9. */
  10. public interface UserMapper {
  11. /**
  12. * 查询所有用户操作
  13. */
  14. List<User> findAll();
  15. }

3.3、接口的配置文件UserMapper.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="cn.waggag.mapper.UserMapper">
  6. <!--配置查询所有-->
  7. <select id="findAll" resultType="cn.waggag.domain.User">
  8. select * from user;
  9. </select>
  10. </mapper>

四、创建Mybatis的配置文件,放在resources下。

  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. <!--mybatis主配置文件-->
  6. <configuration>
  7. <!--配置环境-->
  8. <environments default="mysql">
  9. <!--配置mysql的环境-->
  10. <environment id="mysql">
  11. <!--配置事务的类型-->
  12. <transactionManager type="JDBC"></transactionManager>
  13. <!--配置数据源(连接池)-->
  14. <dataSource type="POOLED">
  15. <!--配置连接数据库的基本信息-->
  16. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  17. <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
  18. <property name="username" value="username"/>
  19. <property name="password" value="password"/>
  20. </dataSource>
  21. </environment>
  22. </environments>
  23. <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
  24. <mappers>
  25. <mapper resource="cn/waggag/mapper/UserMapper.xml"/>
  26. </mappers>
  27. </configuration>

注意: 的配置为文件的relative Path

五、创建一个测试类进行测试

  1. package cn.waggag.test;
  2. import cn.waggag.mapper.UserMapper;
  3. import cn.waggag.domain.User;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.util.List;
  11. /**
  12. * @description: mybatis的入门
  13. * @author: waggag
  14. * @time: 2019/7/15 0:43
  15. * @Company http://www.waggag.cn
  16. */
  17. public class MybatisTest {
  18. /**
  19. * mybatis的入门
  20. * @param args
  21. */
  22. public static void main(String[] args) throws IOException {
  23. //1.读取配置文件
  24. InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
  25. //2.创建一个SqlSessionFactory工厂
  26. SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  27. SqlSessionFactory sqlSessionFactory = builder.build(inputStream);
  28. //3.使用工厂生成SqlSession对象
  29. SqlSession sqlSession = sqlSessionFactory.openSession();
  30. //4.使用SqlSession创建Dao接口的代理对象
  31. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  32. //5.使用代理对象执行方法
  33. List<User> userList = mapper.findAll();
  34. for (User user : userList) {
  35. System.out.println(user);
  36. }
  37. //6.释放资源
  38. sqlSession.close();
  39. inputStream.close();
  40. }
  41. }

六、入门案例中碰到的错误

6.1、数据库时区问题。

### Error querying database. Cause: java.sql.SQLException: The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

解决办法:

  1. //在SqlSessionConfig.xml中配置数据库时区
  2. <property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/>

6.2、Error Opening Session 空指针问题。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MjY0OTk5_size_16_color_FFFFFF_t_70 1

解决方法:< environments default=”mysql“> 的默认值需要指定下面配置的环境

  1. <!--mybatis主配置文件-->
  2. <configuration>
  3. <!--配置环境-->
  4. <environments default="mysql">
  5. <!--配置mysql的环境-->
  6. <environment id="mysql">
  7. <!--配置事务的类型-->
  8. <transactionManager type="JDBC"></transactionManager>
  9. <!--配置数据源(连接池)-->
  10. <dataSource type="POOLED">
  11. <!--配置连接数据库的基本信息-->
  12. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  13. <property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/>
  14. <property name="username" value="waggag"/>
  15. <property name="password" value="225514"/>
  16. </dataSource>
  17. </environment>
  18. </environments>
  19. <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
  20. <mappers>
  21. <mapper resource="cn/waggag/mapper/UserMapper.xml"/>
  22. </mappers>
  23. </configuration>

6.3、无法找到接口的映射文件

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MjY0OTk5_size_16_color_FFFFFF_t_70 2

解决方法1:

  1. pom文件中加入下面代码,发布src/main/javasrc/main/resources下的资源文件到classes
  2. <build>
  3. <resources>
  4. <resource>
  5. <directory>src/main/java</directory>
  6. <includes>
  7. <include>**/*.xml</include>
  8. </includes>
  9. </resource>
  10. <resource>
  11. <directory>src/main/resources</directory>
  12. <includes>
  13. <include>**/*.xml</include>
  14. <include>**/*.properties</include>
  15. </includes>
  16. </resource>
  17. </resources>
  18. </build>

注意:添加src/main/java的resource,,必须配置src/main/resources,否则resources下的配置文件无法正常访问

解决方法2:

在resources下创建和接口相同的路径,放入接口的映射文件,目录结构如下,配置文件可正常发布到classes下。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MjY0OTk5_size_16_color_FFFFFF_t_70 3

发表评论

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

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

相关阅读