JAVA入门[6]-Mybatis简单示例

121 阅读2分钟

初次使用Mybatis,先手写一个hello world级别的例子,即根据id查询商品分类详情。

一、建表

create table Category (
Id INT not null,
Name varchar(80) null,
constraint pk_category primary key (Id)
);

插入测试数据

INSERT INTO category VALUES (1,'Fish');
INSERT INTO category VALUES (2,'Dogs');
INSERT INTO category VALUES (3,'Birds');

二、新建测试项目

新建Maven项目,最终的项目结构如下:

Image(32)

修改pom.xml,引入mybatis相关依赖。

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

 

三、建立pojo

建立Category对应的实体,这里为了方便测试重写了toString()方法。

public class Category implements Serializable {
    private int id;
    private String name;
</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">final</span> <span style="color: #0000ff;">long</span> serialVersionUID = 1L<span style="color: #000000;">;

</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getId() {
    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> id;
}
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> setId(<span style="color: #0000ff;">int</span><span style="color: #000000;"> id) {
    </span><span style="color: #0000ff;">this</span>.id=<span style="color: #000000;"> id;
}

</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String getName() {
    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> name;
}
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setName(String name) {
    </span><span style="color: #0000ff;">this</span>.name = name == <span style="color: #0000ff;">null</span> ? <span style="color: #0000ff;">null</span><span style="color: #000000;"> : name.trim();
}

@Override
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String toString() {
    StringBuilder sb </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder();
    sb.append(getClass().getSimpleName());
    sb.append(</span>" ["<span style="color: #000000;">);
    sb.append(</span>"Hash = "<span style="color: #000000;">).append(hashCode());
    sb.append(</span>", id="<span style="color: #000000;">).append(id);
    sb.append(</span>", name="<span style="color: #000000;">).append(name);
    sb.append(</span>"]"<span style="color: #000000;">);
    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> sb.toString();
}

}

四、定义数据访问接口

在src/main/cathy.mybatis/mapper包,新增CategoryMapper接口,这里只定义GetById方法。

public interface CategoryMapper {
    public Category GetById(int id);
}

五、配置mybatis xml文件

1.mybatis的配置都基于XML文件,我们放在resources/config/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>
    <typeAliases>
        <typeAlias type="model.Category" alias="Category" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/store" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/CategoryMapper.xml" />
    </mappers>
</configuration>
  • typeAliases: 类型别名是为 Java 类型设置一个短的名字,用来减少类完全限定名的冗余。
  • dataSource:使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
  • mappers:用来定义SQL映射语句

六、SqlSession工具类

构建SqlSession有多种方式,这里我们先从mybatis-config.xml配置文件构建SqlSessionFactory,然后从SqlSessionFactory获取SqlSession。

public static SqlSession getSqlSession() {
        SqlSession session = null;
        try {
            InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);
            SqlSessionFactory factory = new SqlSessionFactoryBuilder()
                    .build(stream);
            session = factory.openSession();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return session;
    }

 

七、调用:

public static void main(String[] args) {
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        try{
        CategoryMapper categoryMapper</span>=<strong>sqlSession.getMapper(CategoryMapper.<span style="color: #0000ff;">class</span></strong><span style="color: #000000;"><strong>)</strong>;
        Category category</span>=<strong>categoryMapper.GetById</strong>(1<span style="color: #000000;">);
        </span><span style="color: #0000ff;">if</span>(category==<span style="color: #0000ff;">null</span><span style="color: #000000;">){
            System.out.println(</span>"该分类不存在"<span style="color: #000000;">);
        }
        </span><span style="color: #0000ff;">else</span><span style="color: #000000;">{
            System.out.println(category.toString());
        }
    }</span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e){
        System.out.println(e.getMessage());
    }
    </span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
        MybatisUtils.closeSession(sqlSession);
    }
}</span></pre>

 

运行结果:Category [Hash = 731395981, id=1, name=Fish]

源码地址:https://pan.baidu.com/s/1kUKXnMn