MyBatis简介测试

x33g5p2x  于2022-08-17 转载在 其他  
字(4.4k)|赞(0)|评价(0)|浏览(960)

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对象和statementsql的动态参数进行映射生成最终执行的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>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. <version>5.1.32</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.mybatis</groupId>
  8. <artifactId>mybatis</artifactId>
  9. <version>3.4.6</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>junit</groupId>
  13. <artifactId>junit</artifactId>
  14. <version>4.12</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>log4j</groupId>
  18. <artifactId>log4j</artifactId>
  19. <version>1.2.17</version>
  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. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="userMapper">
  4. <!--查询操作,resultType为查询出来的结果往哪里封装-->
  5. <select id="findAll" resultType="com_mybatis.pojo.User">
  6. select * from user
  7. </select>
  8. </mapper>

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

在resource下的SqlMapConfig.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <!--数据源环境-->
  5. <environments default="development">
  6. <environment id="development">
  7. <transactionManager type="JDBC"></transactionManager>
  8. <dataSource type="POOLED">
  9. <property name="driver" value="com.mysql.jdbc.Driver"/>
  10. <property name="url" value="jdbc:mysql://localhost:3306/test"/>
  11. <property name="username" value="root"/>
  12. <property name="password" value="123456"/>
  13. </dataSource>
  14. </environment>
  15. </environments>
  16. <!--加载映射文件-->
  17. <mappers>
  18. <mapper resource="com_mybatis/mapper/UserMapper.xml"></mapper>
  19. </mappers>
  20. </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<User> userList = sqlSession.selectList("userMapper.findAll");
  23. System.out.println(userList);
  24. //释放资源
  25. sqlSession.close();
  26. }
  27. }

运行结果

相关文章