MyBatis快速入门,就是这么简单


一、简单介绍一下MyBatis

MyBatis是一个优秀的持久层框架,它对JDBC操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等JDBC繁杂的过程代码。

对JDBC进行封装的框架有哪些

Mybatis,Hibernate,dbutils,Spring中的jdbcTemplate。

MyBatis基本原理

Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由Mybatis框架执行sql并将结果映射成java对象并返回。

使用JDBC操作数据库存在的问题

数据库连接频繁开启和关闭,会严重影响数据库的性能。代码中存在硬编码,分别是数据库部分的硬编码和SQL执行部分的硬编码。

二、准备工作

我们先要下载MyBatis + Mysql驱动包

Mybaits下载:传送门~
Mysql驱动下载:传送门~

准备项目:

打开IDEA,新建一个简单的Java项目,项目就叫Mybaits吧,在项目Mybaits目录下创建一个libs目录(用于存放项目所要依赖的jar包),那要放哪些jar包呢?

需要的jar包有这些:
MyBatis快速入门,就是这么简单
把jar包拷贝到libs目录下,别忘了libs → 右键 → Add as Library(这才是真正导入jar包)

目录结构:
MyBatis快速入门,就是这么简单

准备数据库:

Mysql数据库,数据库名sys,表名Student(可以使用开发工具Navicat来创建数据库)

Student表:
MyBatis快速入门,就是这么简单

三、 MyBatis快速入门

主要步骤:

1、 创建PO(model)类(根据需求创建)
2、 创建全局配置文件SqlMapConfig.xml(文件名任意)
3、 编写映射文件
4、 加载映射文件,在全局配置文件SqlMapConfig.xml中进行加载。
5、 编写一个测试程序,即编写Java代码,连接并操作数据库。

编写测试程序的步骤:

a) 读取配置文件。
b) 通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
c) 通过SqlSessionFactory创建SqlSession。
d) 调用SqlSession的操作数据库方法。
e) 关闭SqlSession。

注意: Mybatis使用的日志包是log4j的,所以需要添加log4j.properties(文件内容可以从mybatis-3.5.5.pdf中拷贝,mybatis-3.5.5.pdf就在下载后的Mybatis的目录里)

最终的目录结构:
MyBatis快速入门,就是这么简单
全局配置文件SqlMapConfig.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.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/sys"/>
<property name="username" value="root"/>
<property name="password" value="123456789"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/kkdy/map/StudentMap.xml"/>
</mappers>
</configuration>

全局配置文件简单说明:

dataSource标签里有4个property,分别表示注册驱动、数据库连接的路径、用户名、密码。mappers标签的子标签mapper用于加载映射文件StudentMap.xml。

映射文件StudentMap.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">
<mapper namespace="mybatis.kkdy">
<select id="StudentById" parameterType="String" resultType="cn.kkdy.model.Student">
select * from Student where id = #{id}
</select>
</mapper>

映射文件简单说明:

命名空间(namespace)用于区分不同的mapper,select标签中的id,通过id可以知道要执行的是哪一个sql语句,parameterType用于表示传进来的参数类型,即#{id}中的参数id的类型,resultType指返回的结果类型。

log4j.properties中的代码:

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

提示: 以上三个配置文件的代码都可以从文件mybatis-3.5.5.pdf中找到(这个文件就在下载后的Mybatis的目录里),我们只需要拷贝过来修改即可。

Student类(model):

package cn.kkdy.model;

public class Student {

private String id;
private String name;
private int age;
private String sex;
private int score;

public Student() {
}

public Student(String id, String name, int age, String sex, int score) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.score = score;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public int getScore() {
return score;
}

public void setScore(int score) {
this.score = score;
}

@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", score=" + score +
'}';
}
}

TestStu类(测试类):

package cn.kkdy.test;

import cn.kkdy.model.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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class TestStu {

@Test
public void test() throws IOException {

//1、读取配置文件
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);

//2、通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂
SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(inputStream);

//3、通过SqlSessionFactory创建SqlSession
SqlSession session = sqlSession.openSession();

//4、调用SqlSession的操作数据库方法
Student s = session.selectOne("mybatis.kkdy.StudentById", "202004");

System.out.println(s);
session.commit();
session.close(); //关闭SqlSession对象
}
}

运行结果:

Student{id='202004', name='酷酷的猿', age=20, sex='男', score=100}

代码分析:

重点讲解selectOne("mybatis.kkdy.StudentById", "202004")方法中的参数。

第一个参数,mybatis.kkdy就是映射文件中mapper标签中命名空间(namespace)的值,StudentById指的是映射文件中select标签中id的值,总的来说,这个参数就是相当于一个sql语句。

第二个参数,这个参数的值会传递给映射文件中的sql语句中的变量id。

特别说明:

本文仅演示了查询数据库记录,其他数据库操作例如增、删、改都是类似的,只不过是调用了不同的方法而已。

如果要对数据库进行多种操作,可能会出现重复的代码,我们可以通过创建新的方法,并使用注解@Bufore、@After来抽取重复代码。

最后,我为了演示方便,都是直接抛出异常(不建议这样),建议处理异常。

以上的MyBatis快速入门项目,可以直接下载,无需积分。

四、 总结

MyBatis快速入门,就是这么简单。如果觉得还不错的话,就送我一个赞吧!如果本文对你有用的话,也欢迎收藏哦!

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

MyBatis快速入门,就是这么简单

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » MyBatis快速入门,就是这么简单
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏