Mybatis使用

204 阅读4分钟

maven配置mybatis

<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.4</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

编写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>

    <!--引用外部配置文件-->
    <properties resource="db.properties"/>

    <settings>
        <!--当返回行的所有列都是空时,MyBatis默认返回null-->
        <setting name="returnInstanceForEmptyRow" value="true"/>
    </settings>

    <!--
        environments 主要用于进行数据源的配置
        可以配置多个数据源  -> 通过default属性来指定当前项目运行过程中使用的是哪个数据源
    -->

    <environments default="development">
        <!--
        用于配置一个具体的独立的数据源
        id属性用于给当前数据源定义一个专属名称,方便我们的项目指定
        -->

        <!--用于开发环境的数据源-->
        <environment id="development">
            <!--
            transactionManager用于配置事务管理,默认情况下使用的是JDBC事务管理
            -->
            <!--使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域-->
            <transactionManager type="JDBC"/>
            <!--
                datasource 具体数据源的链接信息
                type -> 设置POOLED属性后表示使用数据库连接池
            -->
            <!--使用数据池,复用实例-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>

        <!--用于生产环境的数据源-->
        <environment id="product">
            <!--使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域-->
            <transactionManager type="JDBC"/>
            <!--使用数据池,复用实例-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>

        <!--用于测试的数据源-->
        <environment id="test">
            <!--使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域-->
            <transactionManager type="JDBC"/>
            <!--使用数据池,复用实例-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- mappers 主要用于配置我们外部的映射配置文件
        在主配置文件中需要引入加载映射配置文件
    -->
    <mappers>
        <!--mapper 主要引入某一个具体的映射文件,resource进行路径方式的引入-->
        <mapper resource="mapper/UsersMapper.xml"/>
    </mappers>
</configuration>
  • mybatis外部引用配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb?useSSL=true&serverTimezone=GMT%2B8
username=root
password= 自己的数据库密码
  • BatisMapper文件
    • 此文件设置了增删改查的对应标签与映射
<?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="数据库对应映射实体类路径实现的接口">
    <!--自定义映射关系集合,主要包含对于一些自定义操作的配置,如 不一致的属性和字段和Bean类-->
    <resultMap id="forUsers" type="数据库对应映射实体类路径 如:com.mybatispro.entity.Users">
        <!--<id column="" property=""></id>-->
        <!-- result配置,主要配置普通属性,column表示配置的是数据库字段名称,property配置的是实体类的属性名称-->
        <result column="id" property="id" jdbcType="INTEGER"/>
        <result column="username" property="username" jdbcType="VARCHAR"/>
        <result column="userpass" property="userpass" jdbcType="VARCHAR"/>
        <result column="nickname" property="nickname" jdbcType="VARCHAR"/>
        <result column="age" property="age" jdbcType="INTEGER"/>
        <result column="gender" property="gender" jdbcType="VARCHAR"/>
        <result column="phone" property="phone" jdbcType="VARCHAR"/>
        <result column="email" property="email" jdbcType="VARCHAR"/>
        <result column="createTime" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP"/>
        <result column="lastlogin" property="lastlogin" jdbcType="TIMESTAMP"/>
        <result column="userStatus" property="userStatus" jdbcType="INTEGER"/>
        <result column="remark" property="remark" jdbcType="VARCHAR"/>
    </resultMap>
    
    <!--创建查询方法映射-->
    <!--resultMap & resultType 查询方法完成后返回的数据的类型若设置了resultMap 标签此处使用resultMap属性,
    若没设置则使用resultType属性写入要返回的类型,一般写入对应实体类的路径返回实体类对象-->
    <select id="findUsers" resultMap="">
        select *
        from mydb.users
        <if test="id != null">
            where id = #{id}
        </if>
    </select>
</mapper>