初识MyBatis(一)

最近在研究一些框架,刚好用到了MyBatis 顺便记录一下吧。

什么是 MyBatis ?
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
上面是官方的介绍,说白了就是用它来操作数据库 以前都是用JDBC直接操作的,现在MyBatis 又进行了一些封装处理使我们可以省去不少操作。

下面我我使用的开发工具为IntelliJ IDEA ,网上的教程多数是eclipse 或IntelliJ IDEA 使用的Maven,这里我只用的是Gardle 。关于IntelliJ IDEA 和Gardle 我就不多说了直接建项目入手。

新建一个项目
初识MyBatis(一)_第1张图片
我这里建立了一个空项目
初识MyBatis(一)_第2张图片
然后在空项目中建立一个,点击项目处新建如下:
初识MyBatis(一)_第3张图片
这里选择什么看自己的需求,我目前只是建立一个java 程序来测试:
初识MyBatis(一)_第4张图片
下面填写信息
初识MyBatis(一)_第5张图片
然后项目名和项目存放的路径:
初识MyBatis(一)_第6张图片
创建完之后项目中什么都没有需要我们手动创建
在这里插入图片描述
现在里面建一个src 文件
在这里插入图片描述
然后在src里面创建main文件
在这里插入图片描述
然后里面建立对应的java文件或kotlin文件,在里面建立包命名就可以了。
下面看我们应用的包,在build.gradle

dependencies {
    compile 'org.mybatis.generator:mybatis-generator-core:1.3.5'
    compile 'mysql:mysql-connector-java:5.1.40' /*指定数据库,这里用的是mysql*/
    compile 'tk.mybatis:mapper:3.3.9'
    compile 'org.mybatis:mybatis:3.2.6'
}

项目的build.gradle里面我引用阿里的镜像地址:

  repositories {
        maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"}
        mavenCentral()
        jcenter()
    }

我这里还用到了kotlin 所用有相应的引用

 dependencies {
        classpath group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: SPRING_BOOT_VERSION
        classpath group: 'org.jetbrains.kotlin', name: 'kotlin-gradle-plugin', version: KOTLIN_VERSION
        classpath group: 'org.jetbrains.dokka', name: 'dokka-gradle-plugin', version: DOKKA_VERSION
    }

然后我们开始写我们的配置文件了,首先要在main文件下建一个文件resources
初识MyBatis(一)_第7张图片

IntelliJ IDEA 中必须把所有的.xml文件都放在resources文件下,否则会不识别,所以这里注意一下

在resources 新建一个generatorConfig.xml 文件,里面做相应的配置:








 

 












    
        
        
    

映射文件mappers 这里我在 resources中建了BlogMapper.xml的文件里面做一些处理




    
    

上面可以看到是一个查询语句,没错,MyBatis的查询是在这里面做的然后我们建立对应的接口类:
在这里插入图片描述

/**
 * 接口
 */
public interface BlogMapper {

    Blog selectBlog(Integer id);
}

上面是和BlogMapper.xml 中对应写的查询方法,再建立一个帮助类,这里我直接贴出来:

/**
 * 工具类
 * 从 从 SqlSessionFactory  中获取 SqlSession
 */
public class MyBatisUtil {

    private static SqlSessionFactory sqlSessionFactory = null;

    static {
//        String resource = "org/mybatis/example/Configuration.xml";
        Reader reader = null;
        try {
            // 读取.xml的配置
            reader = Resources.getResourceAsReader("generatorConfig.xml");
            sqlSessionFactory =new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    private  MyBatisUtil(){
    }
    public static SqlSession getSqlSessionFactory(){
        return sqlSessionFactory.openSession();
    }

}

上面我们可以看出读取了.xml中的配置连接数据库,我这里数据库是已经建好的
初识MyBatis(一)_第8张图片
表明
在这里插入图片描述
然后建立对应的实体类:

public class Blog {

    private int id;
    private String name;
    private String codeId;

    public String getCodeId() {
        return codeId;
    }

    public void setCodeId(String codeId) {
        this.codeId = codeId;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

建立一个单元测试文件,建立测试类:
初识MyBatis(一)_第9张图片
对应写一个方法:

public class BlogTest {

    /**
     * 查询id
     */
    @Test
    public void testSelectBlog(){
        SqlSession sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
        BlogMapper mapper = sqlSessionFactory.getMapper(BlogMapper.class);
        Blog blog = mapper.selectBlog(1);
        System.out.println("数据库名="+blog.toString());
        sqlSessionFactory.close();
    }
}

点击运行就可以了
初识MyBatis(一)_第10张图片

我们发现打印出来的有一个属性没有值?
在这里插入图片描述
发现原来是实体类中的名字和数据库中的字段名不符合,一个是codeId,一个是code_id,有些时候我们并不能把他们写的一模一样,有可能是几个单词组合起来的,所以java命名是驼峰式的,数据库是-分开的,这里我们就要处理一下了。
大家都知道SQL中有个别名的方法,那需要我们把所有的字段都出来,字段少了还可以,多了就比较麻烦了:
别名

 

利用as给个别字段起个别名,在MyBatis中我们还有一个方法resultMap,我们只需要指定需要改变的字段就可以:

 
        
    

然后在对应的地方引用就可以了:

改之前:resultType="Blog"

改之后:resultType="blogResultMap"

简单的查询语句已经完成了,今天就到这里了,明天继续…

你可能感兴趣的:(MyBatis,数据库,框架)