什么是MyBatis

发布时间:2023年12月24日

目录

一、Mybatis简介

1、持久化

2、为什么持久化?

二、Mybatis的作用

三、MyBatis的优点

1、简单易学:

2、灵活:

3、解除sql与程序代码的耦合:

4、提供xml标签,支持编写动态sql。

5、现在主流使用方法

四、编写第一个mybaits程序

1、导入jar包(包在我的资源里面)

2、创建配置文件:

3、创建mybatis核心配置文件?

4、创建一个类

6、在Student.xml配置根据id获取用户信息

7、创建测试类


一、Mybatis简介

1、Myba是一款优秀的持久层框架

2、MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,减少了代码的冗余,减少程序员的操作。
3、Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
4、MyBatis原来是apache的一个开源项目,叫做ibatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis
5、2013年11月官方代码迁移到GitHub

1、持久化

持久化是将程序数据在持久状态和瞬时状态间转换的机制。(理解一下这个持久状态转化为瞬时状态,持久化是mybatis最重要的特性)

即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。
JDBC就是一种持久化机制。文件IO也是一种持久化机制。
?

2、为什么持久化?
?

  • 内存断点后数据会丢失,但是有些业务不允许这种情况的存在
  • 比起硬盘,内存过于昂贵,如果有够量的内存,则不需要持久化服务,但是正是因为内存太贵,储存有限,因此需要持久化来缓存

二、Mybatis的作用

1、Mybatis就是帮助程序员将数据存取到数据库里面。


2、传统的jdbc操作 , 有很多重复代码块 .比如 : 数据取出时的封装 , 数据库的建立连接等等… , 通过框架可以减少重复代码,提高开发效率 .

3、MyBatis 是一个半自动化的ORM框架 (Object Relationship Mapping) -->对象关系映射
所有的事情,不用Mybatis依旧可以做到,只是用了它,会更加方便更加简单,开发更快速。
?

三、MyBatis的优点

1、简单易学:

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

2、灵活:

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

3、解除sql与程序代码的耦合:

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

4、提供xml标签,支持编写动态sql。


5、现在主流使用方法


四、编写第一个mybaits程序

1、导入jar包(包在我的资源里面)

加入mybatis核心包、依赖包、数据驱动包

2、创建配置文件:

(mybatis默认使用log4j作为输出日志信息。)

在src也就是根目录下创建config目录(source folder类型)log4j.properties如下:

把下面的复制到log4j.properties里面就行了

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# 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

3、创建mybatis核心配置文件?

也是在src下创建SqlMapConfig.xml文件(SqlMapConfig.xml是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>
	<!-- 和spring整合后 environments配置将废除-->
	<environments default="development">
		<environment id="development">
		<!-- 使用jdbc事务管理-->
			<transactionManager type="JDBC" />
		<!-- 数据库连接池-->
			<dataSource type="POOLED">
                //数据库驱动
				<property name="driver" value="com.mysql.jdbc.Driver" />
                //数据库地址
				<property name="url" value="jdbc:mysql://localhost:3306/db_test?characterEncoding=utf-8" />
                //数据库用户名
				<property name="username" value="root" />
                //数据库密码 
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
</configuration>

4、创建一个类

可以在src下直接创建也可以创建一个包再创建

public class Student {
    private int id;
    private String studentName;
    private String gender;
    private String address;
    private String email;
    private String remark;

    public Student() {
    }

    public Student( String studentName, String gender, String address, String email, String remark) {

        this.studentName = studentName;
        this.gender = gender;
        this.address = address;
        this.email = email;
        this.remark = remark;
    }

    public int getId() {
        return id;
    }

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

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}

但是也要有一个地方要注意,创建成员变量时要注意和数据库的各个数据要对上,数量和名称都要一样

5、创建映射文件

还是在src下直接创建Student.xml(?这个映射文件名最好也和上面那个类名相同,我的是Student.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="test">
</mapper>

创建之后,我们要将Student.xml添加在SqlMapConfig.xml之中,因为mybatis框架需要加载映射文件

<mappers>
        //resource的属性值为你xml文件的项目中的路径 
		<mapper resource="sqlmap/Student.xml"/>
</mappers>

6、在Student.xml配置根据id获取用户信息

<select id="findStudentById" parameterType="int" resultType="com.xinhua.domain.Student">
        select * from student where id = #{id}
    </select>

resultType的属性值为你类在项目中的路径,右键找到copy reference

7、创建测试类

public class TestDemo {
    SqlSessionFactory ssf = null;
    @Before
    public void creatFactory(){
        InputStream input = null;
        try {
            input = Resources.getResourceAsStream("SqlMapConfig.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        ssf = new SqlSessionFactoryBuilder().build(input);
    }
 /** 通过id查找*/
    @Test
    public void testFindStudentById(){
        SqlSession session =ssf.openSession();
        Student student = session.selectOne("test.findStudentById", 1);
        System.out.println(student.getId()+","+student.getStudentName()+","+student.getAddress());

    }

到这就完成了,家人们去试一试吧

文章来源:https://blog.csdn.net/weixin_73509711/article/details/135133792
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。