MyBatis基本介绍及快速入门案例

 (2)前身是ibatis,在ibatis3.x时,更名为MyBatis
(3)MyBatis 在java和sql之间提供更灵活的映射方案
(4)MyBatis将sql语句和方法实现,直接写到xml文件中,实现和java程序解耦
(5)mybatis 只负责sql,建库建表的工作由程序员完成

MyBatis基本介绍及快速入门案例_第1张图片

 快速入门案例

0、项目结构

MyBatis基本介绍及快速入门案例_第2张图片

1、新建一个java project , 并写好maven依赖

这里注意配置末尾的resorce配置,否则会找不到映射文件

maven项目中有一个目录标准,除了标准的resources目录外,src下的xml文件构建时不会被输出到target/classes目录下,故可以将xml文件移至resources目录下(方法一),或者将src下的xml文件也添加成资源(resource),使构建时也会输出到target/classes目录下(方法二)。
 



    4.0.0

    org.example
    myBatisHello
    1.0-SNAPSHOT

    
        8
        8
        UTF-8
    

    

        
            org.mybatis
            mybatis
            3.5.15
        

        
            org.ow2.asm
            asm
            7.1
        

        
            cglib
            cglib
            3.3.0
        

        
            ch.qos.reload4j
            reload4j
            1.2.25
        

        
            commons-logging
            commons-logging
            1.3.0
        

        
            ognl
            ognl
            3.4.2
        

        
            org.apache.logging.log4j
            log4j-api
            2.22.0
        
        
            org.apache.logging.log4j
            log4j-core
            2.17.1
        
        
            log4j
            log4j
            1.2.17
        

        
            org.javassist
            javassist
            3.29.2-GA
        

        
            org.slf4j
            slf4j-api
            2.0.9
        
        
            mysql
            mysql-connector-java
            8.0.28
        
        
            com.mchange
            c3p0
            0.9.5.5
        
        
        
            com.mchange
            mchange-commons-java
            0.2.9
        
        
            org.mybatis.caches
            mybatis-ehcache
            1.2.3
        

        
            net.sf.ehcache
            ehcache-core
            2.6.11
        

    

 
        
            
            
                src/main/resources
            

            
            
                src/main/java
                
                    **/*.xml
                
                true
            
        
    


2、创建数据库表

create table `mybatis_monster_` (
	`monster_id` int  	primary key  auto_increment,
	`age` mediumint unsigned not null default 0,
	`birthday` date not null,
	`email` varchar(255) not null default '[email protected]',
	`gender` TINYINT unsigned not null default 1,
	`name` varchar(255) not null default '',
	`salary` double not null default 0.0
	)charset=utf8 engine=InnoDB;

3、配置一个log4j.xml的日志输出文件

注意会使用这个log4j的模版即可(模板来自网络,log4j2是新版,log4j已停止维护,log4j目前还不太懂,先不做深究),不需要记住。

以后会修改就行了,不用管太多,告诉你这么用,你就这么用就可以了。





    

        

        
            
        
    

    
        
    

    
        
    
    
        
        
    


4、配置myBatis-config.xml

mybatis官网mybatis – MyBatis 3 | 配置icon-default.png?t=N7T8https://mybatis.org/mybatis-3/zh_CN/configuration.html

从官网文档中复制xml文件的表头,修改即可。 (注意复制粘贴可能会有错误,比如多余的空格,点号,都会导致读取配置文件失败)




    

        

            

            
                
                
                
                
            
        
    
    


        
    

5、写好javaBean :Monster

//这就是一个普通的Pojo类
//因为使用原生态的sql语句查询结果还是要封装成对象
//所以这里的实体类属性名和数据库表字段名一致
// (必须遵守,否则处理会踩坑,
// 当然也有方法可以处理)

package com.bin.mybatis.entity;

import java.util.Date;

//这就是一个普通的Pojo类
//因为使用原生态的sql语句查询结果还是要封装成对象
//所以这里的实体类属性名和数据库表字段名一致
// (必须遵守,否则处理会踩坑,
// 当然也有方法可以处理)
public class Monster {
    private Integer monster_id;
    private Integer age;
    private Date  birthday;
    private String  email;
    private Integer gender;
    private String  name;
    private Double salary;

    public Monster(Integer monster_id, Integer age, Date birthday, String email, Integer gender, String name, Double salary) {
        this.monster_id = monster_id;
        this.age = age;
        this.birthday = birthday;
        this.email = email;
        this.gender = gender;
        this.name = name;
        this.salary = salary;
    }

    public Monster() {
    }

    public Integer getMonster_id() {
        return monster_id;
    }

    public void setMonster_id(Integer monster_id) {
        this.monster_id = monster_id;
    }

    public Integer getAge() {
        return age;
    }

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

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getEmail() {
        return email;
    }

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

    public Integer getGender() {
        return gender;
    }

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

    public String getName() {
        return name;
    }

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

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Monster{" +
                "monster_id=" + monster_id +
                ", age=" + age +
                ", birthday=" + birthday +
                ", email='" + email + '\'' +
                ", gender=" + gender +
                ", name='" + name + '\'' +
                ", salary=" + salary +
                '}';
    }
}

6、写好接口MonsterMapper 

接口中定义entity的crud方法

package com.bin.mybatis.mapper;

import com.bin.mybatis.entity.Monster;

public interface MonsterMapper {
    //添加方法
    public void addMonster(Monster monster);
}

7、配置映射器MonsterMapper.xml

表头从官网复制,地址前边mybatis配置已经给出

注意看注释,此处细节较多

特别注意:#{x} 这里表示的是entity的属性 。 如何理解:insert语句中, 前边是数据库字段值,后边是属性值,由于传递参数需要区分开,所以有此#{}






    
        INSERT INTO mybatis_monster_ (monster_id,age,birthday,email,gender,name,salary)
        VALUES (#{monster_id},#{age},#{birthday},#{email},#{gender},#{name},#{salary})
    

8、使用junit测试

注意测试方法

//        得到myBatis-config.xml,转换成一个inputStream

  //通过sqlSessionFactory对象获取一个回话

 //通过session获取到 monsterMapper这个接口对象

package com.bin.mybatis.test;

import com.bin.mybatis.entity.Monster;
import com.bin.mybatis.mapper.MonsterMapper;
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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.Date;

public class testMybatis {
    private SqlSessionFactory sqlSessionFactory;
    private SqlSession session;
    private MonsterMapper monsterMapper;
    @Before
    public void init() throws Exception{
//        得到myBatis-config.xml,转换成一个inputStream
        InputStream inputStream = Resources.getResourceAsStream("myBatis-config.xml");
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //通过sqlSessionFactory对象获取一个回话
        session = sqlSessionFactory.openSession();
        //通过session获取到 monsterMapper这个接口对象
       monsterMapper = session.getMapper(MonsterMapper.class);

    }
    @Test
    public void test01() {
        Monster monster = new Monster();

        monster.setAge(100);
        monster.setBirthday(new Date());
        monster.setEmail("[email protected]");
        monster.setGender(1);
        monster.setSalary(8928.00);
        monster.setName("银角");

        monsterMapper.addMonster(monster);

    }
    @After
    public void destory() throws Exception{
        if (session != null) {
            session.commit();
            session.close();
        }
    }
}

9、成功添加一条数据MyBatis基本介绍及快速入门案例_第3张图片

 

细节说明(报错):

                在此案例中,遇到了了几个异常

                1、无法读取mybatis配置文件。 原因 复制粘贴表头时没有注意检查,多了点号

                2、无法打开session,空指针异常。原因 换了一个配置映射文件的标签,改为扫描整个包

                3、找不到映射文件 。 原因 开头已经说明。src下的xml文件构建时不会被输出到                                  target/classes目录下,故无法找到。

你可能感兴趣的:(ssm学习,mybatis,java)