说到Mybatis,很多人不知道这是用来干什么的,简单来说就是用来优化JDBC的使用,我们可以理解为一个这样的流程:
数据库->JDBC->MyBatis->Java
今天来教一下简单的mybatis使用方法,对于初学者很友好。
目录
一、MySQL准备
首先呢我们需要准备一个数据库的表数据,来进行随后使用mybatis进行的查询操作。
这里用到的是MySQL数据库,我们首先通过cmd命令窗口进行数据库连接
mysql -u root -p
进入数据库后我们创建一个属于自己的数据库,建议检查exists以防报错
create database if not exists csdnsql;
通过use csdnsql;进入数据库进行操作
接下来创建一个存储数据的表单,我在这里创建一个Student简易学生表
create table student(
id varchar(10) primary key,
name varchar(10) not null,
sex char(1) not null,
birthday date default '2000-01-01',
address varchar(30)
);
接下来通过insert方法录入几个数据以供后面使用
insert into student values
('10101','张三','男','2002-08-12','北京市朝阳区'),
('10103','李四','男','2001-9-22','北京市东城区'),
('10105','小霞','女','2003-02-15','北京市大兴区');
接下来我们来查看一下自己录入的数据是否已经存在于数据库中了
可以看到我们的数据已经成功进入了数据库中,数据库的准备就这样结束了,马上进入IDEA进行我们的mybatis学习。
二、IDEA配置 mybatis环境
创建一个maven项目
创建完成后打开项目下的pom.xml进行一些依赖的配置,你问我依赖是什么?依赖就是导jar包,连网自动导入不用百度的那种。
添加如下内容导入mybatis和jdbc的jar包
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
</dependencies>
上官网!哈哈,肯定是mybatis的官网,我们去把它的核心配置文件copy下来,不过首先我们要在这个目录下创建一个xml文件来保存核心配置,这个图示应该肥肠明显不用我多说了吧。
内容直接照搬!
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///csdnsql?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
上面这些其实都还没有创建结束,但我们需要先进行pojo的创建和mapper映射的创建,才能继续修改mybatis核心配置文件xml
创建pojo
这其实就是你的JavaBean,类名就是查询的表名咯
创建一个com.bamboo.pojo的package包
在其中创建一个名为Student的类
package com.bamboo.pojo;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Student {
private String id;
private String primary;
private String name;
private Character sex;
private Date birthday;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPrimary() {
return primary;
}
public void setPrimary(String primary) {
this.primary = primary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Character getSex() {
return sex;
}
public void setSex(Character sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", primary='" + primary + '\'' +
", name='" + name + '\'' +
", sex=" + sex +
", birthday=" + new SimpleDateFormat("yyyy-MM-dd").format(birthday).toString() +
", address='" + address + '\'' +
'}';
}
}
创建mapper.xml
接下来创建映射文件咯~~
问我干嘛的?用来保存SQL语句的东西
在resources下创建一个com/bamboo/mapper/StudentMapper.xml的文件,一定要用/分隔,不然会形成你不想看到的结果,创建完成后先不用管。
很好!接下来我们回到mybatis核心配置文件
1.修改其中的<mappers>标签为以下内容
是不是想问这个是用来干嘛的,我来告诉你
这个用来定位刚才我们创建的mapper映射文件
<mappers>
<package name="com.bamboo.mapper"/>
</mappers>
2.在<environments>标签上方创建<typeAliases>标签来为我们的pojo起别名,省略需要写全限名的步骤
<typeAliases>
<package name="com.bamboo.pojo"/>
</typeAliases>
创建Mapper代理接口
在java源路径下创建com.bamboo.mapper.StudentMapper的接口
具体如下图,我们在其中添加一个接口, 并且写入一个接口方法。
package com.bamboo.mapper;
import com.bamboo.pojo.Student;
import java.util.List;
public interface StudentMapper {
List<Student> selectAll();
}
回到StudentMapper.xml文件
把下面这串全添加进去,大部分是官网给出的dtd,所以看起来有些复杂
实际上就只是通过mapper映射到了Mapper接口,然后通过下面的id来定位方法,resultType来设置返回的结果类,内容显而易见的是SQL查询语句。
<?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">
<mapper namespace="com.bamboo.mapper.StudentMapper">
<select id="selectAll" resultType="Student">
select * from csdnsql.student;
</select>
</mapper>
至此配置全部结束,我们开始使用这些东西来进行对数据库的查询和使用。
启动Main方法
直接在com.bamboo包下创建一个主线程MybatisDemo类文件来启动我们的mybatis项目
至此项目结构图是这样的,如果哪里不对请稍作修改
一个一个写,写累了呀,我一次性写完带图好叭,哈哈,我可还真的不是一个负责任的博主。
步骤:先创建一个startMybatis()方法来保存所有代码,通过throws Exception抛出异常给main
1.获取SqlSessionFactory
2.通过工厂来获取SqlSession
3.创建Mapper映射
4.创建List集合接收mapper代理执行获取得结果
5.输出结果
6.关闭sqlSession对象
7.使用main来调用,通过try-catch捕获异常避免jvm异常终止程序
!!!!!!上代码!
!!果然还是先上结果再上代码,这样更有信服力
package com.bamboo;
import com.bamboo.mapper.StudentMapper;
import com.bamboo.pojo.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class MybatisDemo {
public static void main(String[] args) {
try {
startMybatis();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void startMybatis() throws Exception {
//1
String resource = "mybatis-config.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//2
SqlSession sqlSession = sqlSessionFactory.openSession();
//3
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
//4
List<Student> students = studentMapper.selectAll();
//5
for (Student student : students) {
System.out.println(student);
}
//6
sqlSession.close();
}
}
至此mybatis初体验就结束啦,亲手试一试,你就不会觉得那么难了。