mybatis学习(一):简单入门

什么是 MyBatis ?

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

下面是例子

1,新建maven项目和数据库

CREATE TABLE blog (
  id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(20) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

2,pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.luo</groupId>
    <artifactId>mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build />
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.15</version>
        </dependency>
    </dependencies>
</project>

3,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">
<!-- XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。 -->
<configuration>
<!-- 引入外部配置文件 -->
<properties resource="jdbc.properties"></properties>

<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="com/luo/mybatis/example/BlogMapper.java" /> <mapper
resource="com/luo/mybatis/example/BlogMapper.xml" /> -->
<package name="com/luo/mybatis/example" />
</mappers>
</configuration>

3,jdbc.properties

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/luo
jdbc.username=root
jdbc.password=123456

4,类Blog

package com.luo.mybatis.example;

import java.io.Serializable;

public class Blog implements Serializable {
    private static final long serialVersionUID = 1L;
    private Integer id;
    private String username;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
    @Override
    public String toString() {
        return "Blog [id=" + id + ", username=" + username
                + "]";
    }

}

5,接口BlogMapper

package com.luo.mybatis.example;

import org.apache.ibatis.annotations.Select;

public interface BlogMapper {
//对于像 BlogMapper 这样的映射器类(Mapper class)来说,还有另一招来处理。它们的映射的语句可以不需要用 XML 来做,取而代之的是可以使用 Java 注解
/*@Select("SELECT * FROM blog WHERE id = #{id}")*/
Blog selectBlog(int id);
}

6,BlogMapper.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="com.luo.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="com.luo.mybatis.example.Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

7,测试类Test

package com.luo.mybatis.example;

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

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Test {

    public static void main(String[] args) throws IOException {
        /**
         * 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的
         */
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        try {
            // 方式一:有很多优势,首先它不是基于字符串常量的,就会更安全;其次,如果你的 IDE 有代码补全功能,那么你可以在有了已映射 SQL 语句的基础之上利用这个功能。
            // BlogMapper mapper = session.getMapper(BlogMapper.class);
            // Blog blog = mapper.selectBlog(4);
            // 方式二:旧版本 MyBatis的方式
            Blog blog = (Blog) session.selectOne("com.luo.mybatis.example.BlogMapper.selectBlog", 4);
            System.out.println(blog);
        } finally {
            session.close();
        }
    }

}

运行,output:  Blog [id=4, username=test]

posted @ 2018-09-26 17:09  阿罗luo  阅读(110)  评论(0)    收藏  举报