• MyBatis简介测试


    目录

    MyBatis简介

    原始jdbc操作的分析

    什么是Mybatis

    MyBatis开发步骤

    ①添加pom相应的坐标

    ②数据库中创建表

     ③创建pojo下的user类

    ⑥编写测试类

    运行结果


    MyBatis简介

    原始jdbc操作的分析

    1. 原始jdbc开发存在的问题如下:
    2. ①数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能
    3. ③sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,
    4. sql变动需要改变java代码。
    5. ③查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,
    6. 需要手动将实体的数据设置到sql语句的占位符位置
    7. 应对上述问题给出的解决方案:
    8. ①使用数据库连接池初始化连接资源
    9. ②将sql语句抽取到xml配置文件中
    10. ③使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射

    什么是Mybatis

    MyBatis实现了上述的解决方案

    1. ①mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,
    2. 使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、
    3. 创建连接、创建statement等繁杂的过程。
    4. ②mybatis通过xml或注解的方式将要执行的各种statement配置起来,
    5. 并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。
    6. ③最后mybatis框架执行sql并将结果映射为java对象并返回。
    7. 采用ORM思想解决了实体和数据库映射的问题,对idbc进行了封装,
    8. 屏蔽了jdbcapi底层访问细节,使我们不用与jdbcapi打交道,
    9. 就可以完成对数据库的持久化操作。

    MyBatis开发步骤

    ①添加MyBatis的坐标

    ②创建user数据表

    ③编写User实体类

    ④编写映射文件UserMapper.xml(主要写sql语句)

    ⑤编写核心文件SqlMapConfig.xml(配置mybatis核心配置)

    ⑥编写测试类

    ①添加pom相应的坐标

    1. <dependency>
    2. <groupId>mysqlgroupId>
    3. <artifactId>mysql-connector-javaartifactId>
    4. <version>5.1.32version>
    5. dependency>
    6. <dependency>
    7. <groupId>org.mybatisgroupId>
    8. <artifactId>mybatisartifactId>
    9. <version>3.4.6version>
    10. dependency>
    11. <dependency>
    12. <groupId>junitgroupId>
    13. <artifactId>junitartifactId>
    14. <version>4.12version>
    15. dependency>
    16. <dependency>
    17. <groupId>log4jgroupId>
    18. <artifactId>log4jartifactId>
    19. <version>1.2.17version>
    20. dependency>

    ②数据库中创建表

     ③创建pojo下的user类

    1. package com_mybatis.pojo;
    2. public class User {
    3. private int id;
    4. private String username;
    5. private String password;
    6. public int getId() {
    7. return id;
    8. }
    9. public void setId(int id) {
    10. this.id = id;
    11. }
    12. public String getUsername() {
    13. return username;
    14. }
    15. public void setUsername(String username) {
    16. this.username = username;
    17. }
    18. public String getPassword() {
    19. return password;
    20. }
    21. public void setPassword(String password) {
    22. this.password = password;
    23. }
    24. @Override
    25. public String toString() {
    26. return "User{" +
    27. "id=" + id +
    28. ", username='" + username + '\'' +
    29. ", password='" + password + '\'' +
    30. '}'+"\n";
    31. }
    32. }

    ④编写映射文件UserMapper.xml(主要写sql语句)

    在resource下的com_mybatis/mapper/UserMapper.xml

    1. "1.0" encoding="UTF-8" ?>
    2. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. <mapper namespace="userMapper">
    4. <select id="findAll" resultType="com_mybatis.pojo.User">
    5. select * from user
    6. select>
    7. mapper>

    ⑤编写核心文件SqlMapConfig.xml(配置mybatis核心配置)

    在resource下的SqlMapConfig.xml

    1. "1.0" encoding="UTF-8" ?>
    2. configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    3. <configuration>
    4. <environments default="development">
    5. <environment id="development">
    6. <transactionManager type="JDBC">transactionManager>
    7. <dataSource type="POOLED">
    8. <property name="driver" value="com.mysql.jdbc.Driver"/>
    9. <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    10. <property name="username" value="root"/>
    11. <property name="password" value="123456"/>
    12. dataSource>
    13. environment>
    14. environments>
    15. <mappers>
    16. <mapper resource="com_mybatis/mapper/UserMapper.xml">mapper>
    17. mappers>
    18. configuration>

    ⑥编写测试类

    在java下新建一个test包下的mybatisTest类

    1. package com_mybatis.test;
    2. import com_mybatis.pojo.User;
    3. import org.apache.ibatis.io.Resources;
    4. import org.apache.ibatis.session.SqlSession;
    5. import org.apache.ibatis.session.SqlSessionFactory;
    6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    7. import org.junit.Test;
    8. import java.io.File;
    9. import java.io.IOException;
    10. import java.io.InputStream;
    11. import java.util.List;
    12. public class MybatisTest {
    13. @Test
    14. public void test1() throws IOException {
    15. //获得核心配置文件
    16. InputStream resourceAsFile = Resources.getResourceAsStream("sqlMapConfig.xml");
    17. //获得session工厂对象
    18. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsFile);
    19. //获得session会话对象
    20. SqlSession sqlSession = sqlSessionFactory.openSession();
    21. //执行操作 参数:namespace+id
    22. List userList = sqlSession.selectList("userMapper.findAll");
    23. System.out.println(userList);
    24. //释放资源
    25. sqlSession.close();
    26. }
    27. }

    运行结果

  • 相关阅读:
    Ubuntu安装、卸载Docker,常用镜像、容器操作命令
    复习这份阿里架构师的Java核心面试宝典,我四面腾讯拿下offer
    图片文字识别的方法有什么?哪种方法比较好用?
    MySQL 正则判断匹配
    Baklib|企业知识管理的一些建议分享
    2022“杭电杯”中国大学生算法设计超级联赛(1)(6题newbie,后续会更新)
    我,土木人,时隔7年转行计算机,差点放弃了
    Linux- 后台运行符&、nohup、disown
    idea自动封装方法
    CSDN21天学习挑战赛之折半插入排序
  • 原文地址:https://blog.csdn.net/weixin_60719453/article/details/126364524