MyBatis基础

1 框架基础

1.1 介绍 MyBatis

他就是一个ORM框架,简单说就是一个半成品,可以完成项目的通用操作,并且减少程序员的开发时间以及减少程序员的代码量,从而简化开发步骤,提高开发效率;

1.2 常用框架

MVC 框架 : 简化了Servlet的开发步骤         : Struts2        SrpingMVC

持久化框架 : 完成数据库操作        : apache DBUtils        Hibernate        Spring JPA        MyBatis

胶水框架 :  Spring

SSM 就是指 Spring,SpringMVC,MyBatis                这是现主流框架

SSH 就是指 Spring,Struts2,Hibernate                    这是之前主流的框架

更久之前还要一个叫 Struts 它不是Struts2的前身,只是一个根,然后Struts2取名是为了将Struts的流量抢过来,当然他肯定比Struts更多功能一点;

1.3 Mybatis介绍

1.3.1 基础介绍

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

简单说就是一个半自动的ORM框架

ORM就是指(Object,Relational,Mapping)对象关系映射 就是对数据库进行操作的,实现对象持久化

1.3.2 特点

  1. 支持自定义Sql,存储过程
  2. 对原有的JDBC 进行封装,几乎消除所有JDBC的代码,让开发人员只需要关注SQL本身就好了
  3. 支持XML和注解配置方式自定义完成ORM的操作,实现结果映射

2 框架部署

2.1 创建项目 

选择一个Maven项目就好了;

2.2 添加依赖与配置

就是再pom.xml中添加MyBatis的依赖,以及他是对数据库操作所以我们也需要添加数据库的依赖:

  <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.17</version>
        </dependency>
    </dependencies>

然后因为连接数据库肯定要有连接原所以我们再配置包(resources),去创建一个Mybatis-config.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配置数据连接信息-->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/表名?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;useSSL=false"/>
                <property name="username" value="用户名"/>
                <property name="password" value="密码"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

2.3 创建数据库

然后我们打开数据库去创建一个库和一个表:
 

CREATE DATABASE `ssm_db` 

USE `ssm_db`;

DROP TABLE IF EXISTS `students`;

CREATE TABLE `students` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `stu_num` char(5) NOT NULL,
  `stu_name` varchar(20) NOT NULL,
  `stu_gender` char(2) NOT NULL,
  `stu_age` int(11) NOT NULL,
  PRIMARY KEY (`sid`),
  UNIQUE KEY `stu_num` (`stu_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.4 编写实体类

先创建一个pojo的实体类的包然后创建类,类名和表名一样就可以了:

public class Students{

    private Integer sid;

    private String stuNum;

    private String stuName;

    private String stuGender;

    private Integer stuAge;

}

然后再添加一个依赖可以让我们少写一些代码:

 <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>

再对实体类进行修改:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Students {

    private Integer sid;

    private String stuNum;

    private String stuName;

    private String stuGender;

    private Integer stuAge;

}

2.5 编写Mapper

紧接着就添加一个Mapper 的包是实体类的抽象方法用来和数据库的接口,先写一个添加方法,里面是他的实体类,传给数据库然后执行添加;

public interface StudentsMapper {

    int insert(Students students);

}

随后我们再配置中也写一个Mapper的包然后创建名字一样的就可以了然后再写上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.onlooker.mapper.StudentsMapper">

    <insert id="insert">
        insert into students(stu_num,stu_name,stu_gender,stu_age)
        values(#{stuNum},#{stuName},#{stuGender},#{stuAge})
    </insert>

</mapper>

这是他的格式

再配置的Mapper中他有标签 select update delete insert 这4个让我们再数据库进行操作,然后以及他还有<where>里面包含<if>做条件的让我们更好的编写SQL;

2.6 添加配置

再mybatis-config.xml 的底部再添加一段让他可以找到你的Mapper

    <mappers>
        <mapper resource="mapper/*.xml"></mapper>
    </mappers>

3 测试

先导入依赖然后再Test包中创建一个测试类:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

然后我们就可以开始编写测试类了,再一个我们使用他接口时,不能直接使用还需要使用到SqlSession 这个类才可以给我们使用;但是他又是通过工厂生成出来的,然后我们还要编写一个  SQL工厂 SqlSessionFactory 通过他的 .openSession来获取的,但是y, SqlSessionFactory又是通过SqlSessionFactoryBuilder来获得的,然后使用 sqlSessionFactoryBuilder.build(???);这里面又需要一个流来完成.最后就是再写一个:

InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");

完整代码:

@Test
public void testStudents()  {
    try {
        InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        SqlSessionFactory factory=builder.build(resource);
        SqlSession session=factory.openSession();
        StudentsMapper mapper=session.getMapper(StudentsMapper.class);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

 这个时候可以测试一下输出 mapper 然后看是否报错;正确:

然后我们可以开始实现接口中的方法:

Students students=new Students();        //给予对象信息
students.setStuNum("001");
students.setStuName("张三");
students.setStuGender("男");
students.setStuAge(18);
int insert = mapper.insert(students);        //执行方法
System.out.println(insert>0?"添加成功!":"添加失败!");
session.commit();        //提交事务

 运行结果:

再打开数据库刷新一下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值