经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MyBatis » 查看文章
Java?Mybatis框架由浅入深全解析中篇
来源:jb51  时间:2022/7/20 13:09:15  对本文有异议

前言

上一篇我们了解了框架相关知识,并且导入依赖配置了核心文件,今天就可以开始写代码测试了。

添加框架的步骤

在idea中添加数据库的可视化

这里需要注意:很多小伙伴链接不成功,这个时候要修改一下自己的驱动版本,尽量与数据库版本一致

添加jdbc.properties属性文件(数据库配置)

jdbc.driverclassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=*******

这里有个小细节,新版数据库驱动的类型不要写错 com.mysql.cj.jdbc.Driver

设置完这个就可以连接到数据库了。

添加SqlMapCongig.xml

Mybatis的核心配置文件

这里直接附上,第一次用来测试成功,先跑通,后面的文章会详细将各个标签的作用和属性学习一遍

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <!-- 读取属性文件(jdbc.properties)
  6. 属性:
  7. resources:从resouces目录下找指定名称的文件加载
  8. url:使用绝对路径加载属性文件
  9. -->
  10. <properties resource="jdbc.properties"></properties>
  11. <!-- 配置数据库的环境变量(数据库链接配置)
  12. default:使用下面的environment标签下的id属性进行指定配置
  13. -->
  14. <!-- <settings>-->
  15. <!-- <setting name="" value=""/>-->
  16. <!-- </settings>-->
  17. <environments default="development">
  18. <!-- 开发时再公司使用的数据库配置
  19. id;就是提供给environment的default属性使用
  20. -->
  21. <environment id="development">
  22. <!-- 配置事务管理器
  23. type:指定事务管理的方式
  24. JDBC:事务的控制交给管理员来处理
  25. MANAGED:由容器(Spring)来管理事务
  26. -->
  27. <transactionManager type="JDBC"></transactionManager>
  28. <!-- 配置数据源:
  29. type:指定不同的配置方式
  30. JNDI:java命名目录接口,在服务器端进行数据库连接池的管理
  31. POOLED:使用数据库连接池
  32. UNPOOLED:不使用数据库连接池
  33. -->
  34. <dataSource type="POOLED">
  35. <!-- 配置数据库连接的基本参数
  36. private String driver;
  37. private String url;
  38. private String username;
  39. private String password;
  40. -->
  41. <property name="driver" value="${jdbc.driverclassName}"/>
  42. <property name="url" value="${jdbc.url}"/>
  43. <property name="username" value="${jdbc.username}"/>
  44. <property name="password" value="${jdbc.password}"/>
  45. </dataSource>
  46. </environment>
  47. <!--在家时候数据库配置-->
  48. <!-- <environment id="home">-->
  49. <!-- <transactionManager type=""></transactionManager>-->
  50. <!-- <dataSource type=""></dataSource>-->
  51. <!-- </environment>-->
  52. <!--&lt;!&ndash;上线的数据库配置&ndash;&gt;-->
  53. <!-- <environment id="online">-->
  54. <!-- <transactionManager type=""></transactionManager>-->
  55. <!-- <dataSource type=""></dataSource>-->
  56. <!-- </environment>-->
  57. </environments>
  58. <!-- 注册mappe.xml文件
  59. resouces:从resouces目录下找指定名称的文件注册
  60. url:使用绝对路径注册
  61. class:动态代理方式下的注册
  62. -->
  63. <mappers>
  64. <mapper resource="StudentMapper.xml"></mapper>
  65. </mappers>
  66. </configuration>

创建实体类Student用来封装数据

  1. package com.longlong.pojo;
  2. import java.util.Objects;
  3. /**
  4. * @Author DELL longlong
  5. * @Date 2022/7/1 14:51
  6. * @Version 1.0
  7. * @Function 实体类
  8. */
  9. public class Student {
  10. private Integer id;
  11. private String name;
  12. private String email;
  13. private Integer age;
  14. public Student() {
  15. }
  16. public Student(String name, String email, Integer age) {
  17. this.name = name;
  18. this.email = email;
  19. this.age = age;
  20. }
  21. public Integer getId() {
  22. return id;
  23. }
  24. public void setId(Integer id) {
  25. this.id = id;
  26. }
  27. public String getName() {
  28. return name;
  29. }
  30. public void setName(String name) {
  31. this.name = name;
  32. }
  33. public String getEmail() {
  34. return email;
  35. }
  36. public void setEmail(String email) {
  37. this.email = email;
  38. }
  39. public Integer getAge() {
  40. return age;
  41. }
  42. public void setAge(Integer age) {
  43. this.age = age;
  44. }
  45. @Override
  46. public boolean equals(Object o) {
  47. if (this == o) return true;
  48. if (o == null || getClass() != o.getClass()) return false;
  49. Student student = (Student) o;
  50. return Objects.equals(id, student.id) && Objects.equals(name, student.name) && Objects.equals(email, student.email) && Objects.equals(age, student.age);
  51. }
  52. @Override
  53. public int hashCode() {
  54. return Objects.hash(id, name, email, age);
  55. }
  56. @Override
  57. public String toString() {
  58. return "Student{" +
  59. "id=" + id +
  60. ", name='" + name + '\'' +
  61. ", email='" + email + '\'' +
  62. ", age=" + age +
  63. '}';
  64. }
  65. }

添加增删改查

添加完成学生表的增删改查的功能的StudentMapper.xml文件

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <!--mapper:是整个文件的打标签,用来区分开始和结束xml文件
  5. 属性:
  6. namespace:指定命名空间(相当于包名),用来区分不同mapper.xml
  7. 文件中的相同id
  8. -->
  9. <mapper namespace="ll">
  10. <!-- 完成查询全部学生的功能
  11. List<Student> getAll();
  12. resultType:指定查询返回的结果集的类型,如果是集合,则必须是泛型
  13. parameterType:如果有参数,则通过他来完成指定参数的类型
  14. -->
  15. <select id="getAll" resultType="com.longlong.pojo.Student" >
  16. select *
  17. from student
  18. </select>
  19. </mapper>

这里要说明一下,为了简单明了,暂时只实现了查询全部的功能

创建测试类进行功能测试

最激动人心的时刻,要进行测试了

  1. package com.longlong.test;
  2. import com.longlong.pojo.Student;
  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.IOException;
  9. import java.io.InputStream;
  10. import java.util.List;
  11. /**
  12. * @Author DELL longlong
  13. * @Date 2022/7/3 19:32
  14. * @Version 1.0
  15. * @Function
  16. */
  17. public class Mytest {
  18. @Test
  19. public void testGetAll() throws IOException {
  20. InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
  21. SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
  22. SqlSession sqlSession = factory.openSession();
  23. List<Student> list = sqlSession.selectList("ll.getAll");
  24. // list.forEach(student -> System.out.println(student));
  25. for (Student student : list){
  26. System.out.println(student);
  27. }
  28. System.out.println("OK");
  29. sqlSession.close();
  30. }
  31. }

运行结果

显示这样就表示我们的测试是成功的,祝贺一下吧!!!

总结

今天我们完成了第一次使用mybatis框架,并且成功了。开心呢!!!

下面就要深入学习配置文件的标签和属性,运行过程,作用!!!

本次源码放在代码仓库gitee,自取链接

到此这篇关于Java Mybatis框架由浅入深全解析中篇的文章就介绍到这了,更多相关Java Mybatis内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号