结合maven认识mybatis(数据库图片待补充但初学也能看)

一.什么是MyBatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

上面是MyBatis官方的简介,我们把这段话说的直白一点,什么是MyBatis,为什么要用MyBatis

MyBatis是让你写的java程序对数据库进行增删改查的一个工具。
java对数据库进行增删改查的工具很多,较之于其他工具,mybatis容易上手,而且开发起来也很简单,同时与spring的组合也非常容易。
目前各大互联网公司多是使用mybatis。
所以,废话不多说,我们直接开始吧

二.测试用的数据库和表

既然是一个对数据库进行操作的工具,所以,我们首先准备好数据库和表

三.建立Maven工程

给Maven小白稍微介绍以下,如果熟悉Maven的,你可以看一下2.pom.xml文件,导入相关包,或者直接跳过这段内容

1.Maven工程的基本结构

你可以建立一个简单的java工程进行测试,不过这样子的话,你需要自己去导入相关的jar包,不过其实也不多,关键的就两个,一个MySql的连接jar包,一个MyBatis的jar包,不过还是强烈建议大家直接使用Maven工程.不过可能你还没有接触过Maven,无所谓,常用的开发工具IntelliJ IDEA和最新的Eclipse都默认安装了Maven插件,直接创建Maven工程就好了没使用过Maven工程也无所谓,知道下面两点,其实我们就可以无障碍的写代码了

日常使用Maven常用的功能其实就是自动帮我们导入相关的关联包
Maven是一个工程构建工具,简单来说,就是我们的Java工程要按照Maven规定的模式创建,java源文件应该放在什么位置,配置文件,测试文件该放在什么位置等等都有规定

上面展示的就是一个刚刚创建好的Maven工程的基本结构,接下来,我们在IntelliJ IDEA中创建一个Maven工程

这个样子创建好之后,就是上面Maven项目第一个截图的样子了

2.修改pom.xml文件,导入相关包

在标签中加入相应包的Maven标签,就能自动引入了

3.查找相关包的dependency标签

当然每个包相应的maven标签是什么也不用纠结,你可以在maven repository网站中搜索对应的包名就行了比如你要查找mybatis的包

搜索出很多mybatis相关内容,我们只是使用原始的mybatis包,选择第一个

选择你需要的mybatis版本,这里的版本划分的很细,其实并不重要,你随便选一个版本都可以

当你修改好pom.xml文件之后,IntelliJ IDEA会在右下角提示你是否在pom.xml文件修改后自动导入相关包

我们选择

Enable Auto-Import

就可以了

四.MyBatis配置文件

上面主要是和maven相关的,接下来才是MyBatis最重要的内容我们要使用MyBatis,肯定需要相关配置,现在主流的其实就两种XML配置文件,以及注解配置,我们先来看一下通过XML配置文件实现的过程下面是整个工程的结构

1.在resources目录中加入mybatis-configuration.xml文件

其实不用我多解释,大家也看的出来,现在这里主要配置的是数据库连接的相关内容,当然现在这里只是一个很简单的配置,后面我们还需要做修改

注意:mysql默认端口是3306,我这里由于使用了Docker映射出来的端口,所以端口做出了修改,你不必和我一样

2.定义表所对应的实体类

package com.yingside.bean;public class User { private int id; private String userTel; private String username; private String password; private String registrationTime; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserTel() { return userTel; } public void setUserTel(String userTel) { this.userTel = userTel; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRegistrationTime() { return registrationTime; } public void setRegistrationTime(String registrationTime) { this.registrationTime = registrationTime; } @Override public String toString() { return "User{" + "id=" + id + ", userTel='" + userTel + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + ", registrationTime='" + registrationTime + '\'' + '}'; }}

3.定义操作 t_user 表的sql映射文件UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 这个XML文件其实就相当于我们三层架构中的DAO层的实现类xxxDaoImpl,如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。 也就是说,有了这个配置文件,至少之前原始JDBC中经常出现的Connection,PreparedStatement,ResultSet这些接口不需要你再创建了 当然要编写这个文件,需要对<mapper>标签中出现的属性和标签都要熟悉,不过没有必要去一一熟悉,用到什么我们再去查询就行了--><!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的例如namespace="om.yingside.mapper.UserMapper"就是com.yingside.mapper(包名)+UserMapper(UserMapper.xml文件去除后缀) --><mapper namespace="com.yingside.mapper.UserMapper"> <!-- 根据 id 查询 user 表中的数据 id:唯一标识符,此文件中的id值不能重复,简单来说,就是DAO层中的方法名 resultType:返回值类型,一条数据库记录也就对应实体类的一个对象,注意现在要跟上全名(包名+类名) parameterType:参数类型,也就是查询条件的类型 #{}表示一个占位符即?,在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。 --> <select id="getUser" parameterType="int" resultType="com.yingside.bean.User"> select * from t_user where id=#{id} </select></mapper>

4.在mybatis-configuration.xml配置文件中注册UserMapper.xml文件

mybatis-configuration.xml文件的标签中加入标签通过下面的截图,注意的位置

<!-- 注册UserMapper.xml文件, UserMapper.xml位于com.yingside.mapper这个包下, 所以resource写成com/yingside/mapper/UserMapper.xml--> 

<mappers> <mapper resource="com/yingside/mapper/UserMapper.xml" /> </mappers>

5.创建测试

package com.yingside.test;import com.yingside.bean.User;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import java.io.InputStream;public class Test { SqlSession sqlSession = null; @Before public void init(){ //mybatis全局配置文件 String resource = "mybatis-configuration.xml"; //加载全局配置文件 InputStream is = this.getClass().getClassLoader().getResourceAsStream(resource); //创建SqlSession工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); //通过工厂生成sqlSession sqlSession = factory.openSession(); } @org.junit.Test public void testGetUser(){ /*这个字符串由 userMapper.xml 文件中 两个部分构成 <mapper namespace="com.yingside.mapper.UserMapper"> 的 namespace 的值 <select id="getUser" > id 值 其实就相当于之前Dao层中xxxDaoImpl.getUser()方法 */ String stmt = "com.yingside.mapper.UserMapper.getUser"; //传入字符串以及参数id User user = sqlSession.selectOne(stmt,1); System.out.println(user); //关闭sqlSession sqlSession.close(); }}

其实现在已经可以测试运行了,我们试一试,结果打印了下面的内容

User{id=1, userTel=‘null’, username=‘金庸’, password=‘0b4e7a0e5fe84ad35fb5f95b9ceeac79’, registrationTime=‘null’}

User对象确实成功的获取到了,并且id,username和password属性都成功的取得,但是userTel和registrationTime却是null,这明显是有问题的,不过至少现在已经成功的获取了数据库中的内容,其他的问题,我们下期内容再来一一解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值