• mybatis实战:一、mybatis入门(配置、一些问题的解决)


    出自《MyBatis从入门到精通》刘增辉,精简


    1.pom.xml

    1.设置源码编码方式为 UTF -8
    2.设置编译源代码的 JDK 版本
    3.添加mybatis依赖
    4.还需要添加会用到的 Log4j JUnit ySql 驱动的依赖。
    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>org.example</groupId>
    7. <artifactId>One_MyBatisPrimary</artifactId>
    8. <version>1.0-SNAPSHOT</version>
    9. <!-- 1.设置源码编码方式为 UTF -8 ,配置如下-->
    10. <properties>
    11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    12. </properties>
    13. <!--2.设置编译源代码的 JDK 版本-->
    14. <build>
    15. <plugins>
    16. <plugin>
    17. <artifactId>maven-compiler-plugin</artifactId>
    18. <configuration>
    19. <source>1.8</source>
    20. <target>1.8</target>
    21. </configuration>
    22. </plugin>
    23. </plugins>
    24. </build>
    25. <dependencies>
    26. <!-- 3.添加mybatis依赖-->
    27. <dependency>
    28. <groupId>org.mybatis</groupId>
    29. <artifactId>mybatis</artifactId>
    30. <version>3.3.0</version>
    31. </dependency>
    32. <!-- 4.还需要添加会用到的 Log4j JUnit ySql 驱动的依赖。-->
    33. <dependency>
    34. <groupId>junit</groupId>
    35. <artifactId>junit</artifactId>
    36. <version>4.12</version>
    37. <scope>test</scope>
    38. </dependency>
    39. <dependency>
    40. <groupId>org.mybatis</groupId>
    41. <artifactId>mybatis</artifactId>
    42. <version>3.3.0</version>
    43. </dependency>
    44. <dependency>
    45. <groupId>mysql</groupId>
    46. <artifactId>mysql-connector-java</artifactId>
    47. <version>5.1.38</version>
    48. </dependency>
    49. <dependency>
    50. <groupId>org.slf4j</groupId>
    51. <artifactId>slf4j-api</artifactId>
    52. <version>1.7.12</version>
    53. </dependency>
    54. <dependency>
    55. <groupId>org.slf4j</groupId>
    56. <artifactId>slf4j-log4j12</artifactId>
    57. <version>1.7.12</version>
    58. </dependency>
    59. <dependency>
    60. <groupId>log4j</groupId>
    61. <artifactId>log4j</artifactId>
    62. <version>1.2.17</version>
    63. </dependency>
    64. <!-- !一其他依赖一-->
    65. </dependencies>
    66. </project>

    2.创建表

    插入数据

    INSERT INTO country(countryname,countrycode) VALUES ('中国','CN'),('美国','us'),('俄罗斯','RU'),('英国','GB'),('法国', 'FR');
    

     3.创建Country类

    1. package tk.mybatis.simple.model;
    2. public class Country {
    3. private Long id;
    4. private String countryname;
    5. private String countrycode;
    6. public Long getId() {
    7. return id;
    8. }
    9. public void setId(Long id) {
    10. this.id = id;
    11. }
    12. public String getCountryname() {
    13. return countryname;
    14. }
    15. public void setCountryname(String countryname) {
    16. this.countryname = countryname;
    17. }
    18. public String getCountrycode() {
    19. return countrycode;
    20. }
    21. public void setCountrycode(String countrycode) {
    22. this.countrycode = countrycode;
    23. }
    24. }

    4.配置mybatis-config.xml

    1. "1.0" encoding="UTF-8" ?>
    2. configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "https://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <settings>
    7. <setting name="logImpl" value="LOG4J"/>
    8. settings>
    9. <typeAliases>
    10. <package name="tk.mybatis.simple.model"/>
    11. typeAliases>
    12. <environments default="development">
    13. <environment id="development">
    14. <transactionManager type="JDBC"/>
    15. <dataSource type="UNPOOLED">
    16. <property name="driver" value="com.mysql.jdbc.Driver"/>
    17. <property name="url" value="jdbc:mysql://localhost:3306/mybatis_study"/>
    18. <property name="username" value="root"/>
    19. <property name="password" value="password"/>
    20. dataSource>
    21. environment>
    22. environments>
    23. <mappers>
    24. <mapper resource="mapper/CountryMapper.xml"/>
    25. mappers>
    26. configuration>

    我的存放路径: 

    5.log4j.properties

    1. #全局面配置
    2. log4j.rootLogger=ERROR, stdout
    3. #MyBatis 日志配置
    4. log4j.logger.tk.mybatis.simple.mapper=TRACE
    5. #控制台输出配置
    6. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    7. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    8. log4j.appender.stdout.layout.ConversonPattern = %5p [%t] - %m%n
    9. #用过 Log4j 日志组件的人可能都会知道,配直中的 log4j.logger.tk.mybatis.simple.mapper 对应的是 tk mybatis simple .mapper包,
    10. # 但是在这个例子中,Java目录下并没有这个包名,只在资源目录下有 mapper目录
    11. #MyBatis 的日志实现中,所谓的包名实际上是 XML 配直中的 namespace 属性值的一部分
    12. #由于namespace性值必须和接口全限定类名相同 ,
    13. # 因此才会真正对应到Java 中的包 当使用纯注解方式时,使用的就是纯粹的包名
    14. #MyBatis 日志的 最低级 TRACE ,
    15. # 在这个日志级别下,MyBatis会输出执行 SQL 过程中的详细信息,这个级别特别适合在开发时使用

    6.CountryMapper.xml

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="mapper.CountryMapper">
    6. <select id="selectAll" resultType="Country">
    7. select * from country
    8. select>
    9. mapper>

    7.测试:CountryMapperTest

    1. package tk.mybatis.simple.mapper;
    2. import org.apache.ibatis.io.Resources;
    3. import org.apache.ibatis.session.SqlSession;
    4. import org.apache.ibatis.session.SqlSessionFactory;
    5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    6. import org.junit.BeforeClass;
    7. import org.junit.Test;
    8. import tk.mybatis.simple.model.Country;
    9. import java.io.IOException;
    10. import java.io.Reader;
    11. import java.util.List;
    12. public class CountryMapperTest {
    13. private static SqlSessionFactory sqlSessionFactory;
    14. @BeforeClass
    15. public static void init() {
    16. try {
    17. // 通过 Resources 工具类将 ti -config.xm 配置文件读入 Reader
    18. Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
    19. // 再通过 SqlSessionFactoryBuilder 建造类使用 Reader 创建 SqlSessionFactory工厂对象。
    20. // 在创建 SqlSessionFactory 对象的过程中
    21. // 首先解 mybatis-config.xml 配置文件,读取配置文件中的 mappers 配置后会读取全部的 Mapper xml 进行具体方法的解析,
    22. // 在这些解析完成后, SqlSessionFactory 就包含了所有的属性配置和执行 SQL 的信息。
    23. sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    24. // 使用时通过 SqlSessionFactory 工厂对象获取 splSession
    25. reader.close();
    26. } catch (IOException ignore) {
    27. ignore.printStackTrace();
    28. }
    29. }
    30. @Test
    31. public void testSelectAll() {
    32. // 通过 SqlSession selectList 方法查 Coun Mapper nl id selectAll的方法,执行 查询
    33. SqlSession sqlSession = sqlSessionFactory.openSession();
    34. // mybaatis底层使用 JDBC 执行 SQL ,获得查询结果集 ResultSet 后,根据 resultType的配置将结果映射为 Country 类型的集合 返回查询结果。
    35. try {
    36. List countryList = sqlSession.selectList("selectAll");
    37. // 这样就得到了最后的查询结果 countryList ,简单将结果输出到控制台。
    38. printCountryList(countryList);
    39. } finally {
    40. //最后 定不要忘记关闭 SqlSession ,否 会因为连接没有关闭导致数据库连接数过多,造成系统崩旗。
    41. sqlSession.close();
    42. }
    43. }
    44. private void printCountryList(List countryList) {
    45. for (Country country : countryList) {
    46. System.out.printf("%-4d%4s%4s\n", country.getId(), country.getCountryname(), country.getCountrycode());
    47. }
    48. }
    49. }

    8.遇到的问题、困难

    (1)jar包有,但是找不到,也不报错!

    解决:

    (1)这个我勾选了但还是有没有成功IDEA提示java: 程序包org.apache.ibatis.session不存在_小白学CS的博客-CSDN博客_程序包org.apache.ibatis.session不存在

    (2)成功解决error:java :程序包org.apache.ibatis.io不存在org.apache.ibatis.session不存在 解决方法_北哑的博客-CSDN博客_程序包org.apache.ibatis.session不存在

     (2)CountryMapper.xml路径问题

     解决:复制的路径是\,改成/

    9.运行结果

  • 相关阅读:
    js:动态导入script脚本文件
    采用对象映射的方式在前端进行数据字典赋值
    202. 快乐数
    STC51单片机21——EEPROM测试
    Python:一个函数可以被多个装饰器装饰
    Zookeeper的ZAB协议原理详解
    java反射机制详解
    spss显著性不高怎么调整数据?
    解释器模式
    实施运维03(在虚拟机上安装winServer2008系统)
  • 原文地址:https://blog.csdn.net/H215919719/article/details/128114920