服务器之家

服务器之家 > 正文

深入浅出JAVA MyBatis-快速入门

时间:2021-09-16 12:25     来源/作者:管世盎

创建项目前的环境搭建

本篇使用工具:

1、JDK:jdk1.8

2、Mysql l数据库 :mysql-5.7.31-winx64

3、Maven 开发工具 :apache-maven-3.8.1

4、IDEA开发工具: IntelliJ IDEA 2020.1.3 x64

在这里我们使用 MyBatis 开发一个简单的 Java 项目完成增删改查(默认你已安装JDK和MySQL及会使用Maven和IDEA的基本操作)

简介

什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

特点

1.简单易学本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

2.灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

(1)提供映射标签,支持对象与数据库的orm字段关系映射

(2)提供对象关系映射标签,支持对象关系组建维护

(3)提供xml标签,支持编写动态sql

(开始)创建Maven项目,导入依赖

 

创建一个新的Maven项目

第一步:

深入浅出JAVA MyBatis-快速入门

第二步:

深入浅出JAVA MyBatis-快速入门

第三步:

深入浅出JAVA MyBatis-快速入门

第四步

深入浅出JAVA MyBatis-快速入门

第五步

深入浅出JAVA MyBatis-快速入门

所需依赖

直接放到 pom.xml中即可

  1. <dependencies>
  2. <!--junit:测试用的-->
  3. <dependency>
  4. <groupId>junit</groupId>
  5. <artifactId>junit</artifactId>
  6. <version>4.11</version>
  7. <scope>test</scope>
  8. </dependency>
  9. <!-- mybatis依赖-->
  10. <dependency>
  11. <groupId>org.mybatis</groupId>
  12. <artifactId>mybatis</artifactId>
  13. <version>3.5.1</version>
  14. </dependency>
  15. <!-- mysql驱动-->
  16. <dependency>
  17. <groupId>mysql</groupId>
  18. <artifactId>mysql-connector-java</artifactId>
  19. <version>5.1.9</version>
  20. </dependency>
  21. </dependencies>
  22. <build>
  23. <resources>
  24. <resource>
  25. <directory>src/main/java</directory><!--所在目录-->
  26. <includes><!--包括目录下的 .properties,.xml 文件都会扫描到-->
  27. <include>**/*.properties</include>
  28. <include>**/*.xml</include>
  29. </includes>
  30. <filtering>false</filtering>
  31. </resource>
  32. </resources>
  33. </build>

(开始)在数据库中创建表

创建 users 表

表名 :users

  1. userld id
  2. userName 姓名
  3. userword 密码
  4. sex 性别
  5. email :邮箱

创建表详细信息

深入浅出JAVA MyBatis-快速入门

添加几条假数据

深入浅出JAVA MyBatis-快速入门

创建实体类

包名

深入浅出JAVA MyBatis-快速入门

给实体类添加 有参,无参方法,get,set方法,toString方法

  1. package com.guanshiang.pojo;
  2. //实体类
  3. public class Users {
  4. private Integer userId;
  5. private String userName;
  6. private String userword;
  7. private String sex;
  8. private String email;
  9. public Users() {
  10. }
  11. public Users(Integer userId, String userName, String userword, String sex, String email) {
  12. this.userId = userId;
  13. this.userName = userName;
  14. this.userword = userword;
  15. this.sex = sex;
  16. this.email = email;
  17. }
  18. public Integer getUserId() {
  19. return userId;
  20. }
  21. public void setUserId(Integer userId) {
  22. this.userId = userId;
  23. }
  24. public String getUserName() {
  25. return userName;
  26. }
  27. public void setUserName(String userName) {
  28. this.userName = userName;
  29. }
  30. public String getUserword() {
  31. return userword;
  32. }
  33. public void setUserword(String userword) {
  34. this.userword = userword;
  35. }
  36. public String getSex() {
  37. return sex;
  38. }
  39. public void setSex(String sex) {
  40. this.sex = sex;
  41. }
  42. public String getEmail() {
  43. return email;
  44. }
  45. public void setEmail(String email) {
  46. this.email = email;
  47. }
  48. @Override
  49. public String toString() {
  50. return "Users{" +
  51. "userId=" + userId +
  52. ", userName='" + userName + '\'' +
  53. ", userword='" + userword + '\'' +
  54. ", sex='" + sex + '\'' +
  55. ", email='" + email + '\'' +
  56. '}';
  57. }
  58. }

创建对应的接口,以及映射,xml文件

接口:

  1. package com.guanshiang.mapper;
  2. import com.guanshiang.pojo.Users;
  3. import java.util.List;
  4. //接口 操作Users表
  5. public interface UsersMapper {
  6. //增加一条
  7. int addUsers(Users users);
  8. //删除一条
  9. int deleteUsersById(int id);
  10. //修改一条
  11. int updateUsers(Users users);
  12. //查询Users表的所有数据
  13. List<Users> queryUsers();
  14. //查询Users一条
  15. Users queryUsersByid(int id);
  16. }

映射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. <!--对应接口名-->
  6. <mapper namespace="com.guanshiang.mapper.UsersMapper">
  7. <!--
  8. select : 表示查询操作
  9. id:你要执行的sql语法的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句
  10. 可以自定义,但是要求你使用接口中的方法名称。
  11. resultType : 表示结果类型的,是sql语句执行后得到ResultSet,遍历这个ResultSet得到java对象的类型 执行完sql语句后,返回的java对象的类型
  12. 值写的类型是权限类名称
  13. -->
  14. <!--查询所有-->
  15. <select id="queryUsers" resultType="com.guanshiang.pojo.Users">
  16. select * from users
  17. </select>
  18. </mapper>
  19. <!--
  20. sql映射文件:写sql语句的,mybatis会执行这些sql
  21. 1、指定约束文件
  22. <!DOCTYPE mapper
  23. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  24. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  25. mybatis-3-mapper.dtd是约束文件的名称,扩展名是dtd的。
  26. 2、约束文件的作用:现在,检查在当前文件中出现的标签,属性必须符合mybatis的要求
  27. 3、mapper 是当前文件的根标签,必须的。
  28. namepace:叫做命名空间,唯一值的,可以是自定义的字符串,
  29. 要求你使用dao接口的全限定名称。
  30. 4、在当前文件中,可以使用特定的标签,表示数据库的特定操作。
  31. <select>: 表示执行查询
  32. <update>:表示更新数据库的操作,就是在<update>中 写的是update sql语句
  33. <insert>:表示插入,放的是insert语句
  34. <delete>:表示删除,执行的delete语句
  35. -->

从 XML 中构建 SqlSessionFactory

以下来自Mybatis官方文档

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。 SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。 从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文 件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符 串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含 一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

String resource = “org/mybatis/example/mybatis-config.xml”; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);

XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据 源(DataSource)以及决定事务作用域和控制方式的事务管理器 (TransactionManager)。后面会再探讨 XML 配置文件的详细内容,这里先给出一个 简单的示例:

创建XML配置文件

深入浅出JAVA MyBatis-快速入门

内容如下:

千万注意:下面连接数据库信息,要写你本地的信息。千万注意:下面连接数据库信息,要写你本地的信息。千万注意:下面连接数据库信息,要写你本地的信息。

  1. <!DOCTYPE configuration
  2. PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <!-- 环境配置:数据库的连接信息
  6. default:必须和某个environment的id值一样。
  7. 告诉mybatis使用哪个数据库的连接信息,也就是访问哪个数据库
  8. 因为可能会有多个environment,也就是会有多个表数据,配置不同的表用不同的id
  9. -->
  10. <environments default="mydiv">
  11. <!-- environment 一个数据库信息的配置,环境
  12. id:一个唯一值,自定义:表示环境的名称
  13. -->
  14. <environment id="mydiv">
  15. <!--
  16. transactionManager: mybatis的事物务型
  17. type:JDBC(表示使用jdbc中的Connection对象的commit,rollback做事务处理)
  18. -->
  19. <transactionManager type="JDBC"/>
  20. <!--
  21. dataSource:表示数据源,连接数据库的
  22. type:表示数据源的类型,POOLED表示使用连接池
  23. -->
  24. <dataSource type="POOLED">
  25. <!--
  26. driver,user,username,password 是固定的,不能自定义。
  27. -->
  28. <!--数据库的驱动名-->
  29. <property name="driver" value="com.mysql.jdbc.Driver"/>
  30. <!--连接数据库的url字符串-->
  31. <property name="url" value="jdbc:mysql://localhost:3306/guan"/>
  32. <!-- 访问数据库的数据名称-->
  33. <property name="username" value="root"/>
  34. <!-- 密码-->
  35. <property name="password" value="guanshiang"/>
  36. </dataSource>
  37. </environment>
  38. </environments>
  39. <!-- 指定 sql mapper(sql映射文件)的位置-->
  40. <mappers>
  41. <!-- 一个1mapper标签指定一个文件的位置
  42. 从类路径开始的路径信息。 target/clasess(类路径)
  43. -->
  44. <!-- 可出现多次mapper -->
  45. <mapper resource="com\guanshiang\dao\StudentDao.xml"/>
  46. </mappers>
  47. </configuration>
  48. <!--
  49. myvatis的主配置文件:主要定义了数据库的配置信息,sql映射文件的位置。
  50.  
  51. 1、约束文件的说明
  52. <!DOCTYPE configuration
  53. PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
  54. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  55. mybatis-3-config.dtd:约束文件名称
  56. 2、configuration:根标签
  57. -->

注意:看文件是否正确

  1. <mappers>
  2. <mapper resource="com\guanshiang\dao\StudentDao.xml"/>
  3. </mappers>

在测试类中测试

在test中创建 测试类 Test01

  1. package com.guanshiang;
  2. import com.guanshiang.pojo.Users;
  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. public class Test01 {
  12. @Test
  13. public void test() throws IOException {
  14. //访问mybatis 读取student数据
  15. //1、定义mybatis主配置文件的名称,从类路径的根开始(target/clasess)
  16. String config="mybatis.xml";
  17. //2、读取这个config表示的文件
  18. InputStream in = Resources.getResourceAsStream(config);
  19. //3、创建SqlSessionFactoryBuider对象
  20. SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  21. //4、创建SqlSessionFactory对象
  22. SqlSessionFactory factory = builder.build(in);
  23. //5、【重要】获取SqlSession对象,从SqlSessionFactory中获取SqlSession
  24. SqlSession sqlSession = factory.openSession();
  25. //6、【重要】指定要执行的sql语句的标识。sql映射文件中的namecapce + "." + 标签的id值
  26. String sqlId = "com.guanshiang.mapper.UsersMapper"+"."+"queryUsers";
  27. //7、执行sql语句,通过sqlId执行
  28. List<Users> users = sqlSession.selectList(sqlId);
  29. //8、输出
  30. for (Users u:users){
  31. System.out.println(u);
  32. }
  33. //9、关闭sqlSession对象
  34. sqlSession.close();
  35. }
  36. }

运行结果:

  1. Users{userId=2, userName='管世轩', userword='1234', sex='男', email='21@qq.com'}
  2. Users{userId=3, userName='管世盎', userword='weqrwr', sex='男', email='2722696413@qq.com'}
  3. Users{userId=4, userName='管世千', userword='guanshiang', sex='男', email='1234@qq.com'}
  4. Users{userId=10, userName='花花', userword='123456', sex='女', email='2722696413@qq.com'}
  5. Users{userId=11, userName='李博', userword='asdfasf', sex='男', email='2722696413@qq.com'}

总体目录

深入浅出JAVA MyBatis-快速入门

总结:

本次没有采用Mybatis工具类等。

如果想完成增删改查等,只需要

先写接口,在写对应的sql映射文件.xml

在测试类中测试即可,改变 6、7、8步骤即可

接口已在上面写好。

本篇就先完成一个查询。

备注:感谢前辈们提供的学习资源,
本片借鉴于 :MyBatis官网文档

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

原文链接:https://blog.csdn.net/weixin_45879764/article/details/117911728

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部