MyBatis 快速使用

以下使用 gradle 构建项目的方式演示 mybatis 的快速使用:

project
   └ src
      └ main 
         ├ java
         |   └ com.assad   
         |      ├ domain  //领域对象
         |      |     └ User
         |      └ dao     //DAO 对象
         |           └ UserDao
         └ resources
               ├ mybatis-config.xml    //mybatis 配置文件
               ├ log4j2.xml
               └ mapper 
                   └ XXXMapper.xml    //实体映射文件

以下是需要进行对象映射的数据库结构:

table users(
    user_id int auto increment(primary key)
    user_name varchar(20)
    user_password varchar(40)
    create_date date
)

项目构建脚本: build.gradle

plugins {
    id 'java'
}
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.12'
    compile 'org.apache.logging.log4j:log4j-core:2.9.0'
    compile 'org.apache.logging.log4j:log4j-api:2.9.0'
    compile 'mysql:mysql-connector-java:5.1.44'
    compile 'org.mybatis:mybatis:3.4.5'
}

mybatis 配置文件: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>
    <settings>
        <!--使用 Log4j2 作为日志模块实现-->
        <setting name="logImpl" value="LOG4J2" />
    </settings>

    <!--配置环境-->
    <environments default="development">
        <environment id="development">
            <!--配置事务管理器,使用JDBC-->
            <transactionManager type="JDBC" />
            <!--配置数据源-->
            <dataSource type="UNPOOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/iogames" />
                <property name="username" value="root" />
                <property name="password" value="1234" />
            </dataSource>
        </environment>
    </environments>

    <!--配置 ORM 映射,使用 xml 的方式配置对象映射-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml" />
    </mappers>

</configuration>

构建一个 users 映射的 Java 实体类:site.assad.domain.User

public class User implements Serializable{

    private int id;
    private String name;
    private String password;
    private Date createDate;
    
    //省略 getter,setter
}

实体类 User 的映射文件:mapper/UserMapper.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="site.assad.dao.UserDao">

    <!--结果映射规则-->
    <resultMap id="userMap" type="site.assad.domain.User">
        <id property="id" column="user_id" />
        <result property="name" column="user_name" />
        <result property="password" column="user_password" />
        <result property="createDate" column="create_date" jdbcType="DATE" javaType="java.util.Date"/>
    </resultMap>

    <select id="getAllUser" resultMap="userMap">
        SELECT user_id,user_name,user_password,create_date FROM users
    </select>

</mapper>