MyBatis主配置文件&映射配置文件的配置 Ⅰ

主配置文件配置层次结构

这里写图片描述

Properties

  • 在configuration中配置Properties
<?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>
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
        <property name="username" value="root"/>
        <property name="password" value="12345"/>
    </properties>

    <!--配置MyBatis环境配置-->
<environments default="development">
    <environment id="development">
        <!--配合JDBC进行事务控制,由Mybatis控制-->
        <transactionManager type="JDBC"></transactionManager>
        <!--连接池-->
        <dataSource type="POOLED">
            <!--driver是mysql的驱动-->
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>
    <mappers>
        <mapper resource="com/bamzhy/bean/user.xml"></mapper>
    </mappers>

</configuration>
  • 复用之前的properties文件
    <properties resource="dbcpconfig.properties">
    </properties>
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis
    username=root
    password=12345

Aliases代指bean xml文件中的类型名(parameterType、resultType)

    <!--type里边要写全类名-->
    <typeAliases>
        <typeAlias type="com.bamzhy.bean.User" alias="user"></typeAlias>
    </typeAliases>

        <!--int这类参数,在Alias里边用_int替代-->
        <select id="findUserById" parameterType="int" resultType="user">

可以使用Mybatis提供的别名来给到parameterType、resultType
这里写图片描述
这里写图片描述这里写图片描述

Mapper映射推荐配置

  • 使用mapper接口的全限定名
    <mappers>
        <mapper class="com.bamzhy.dao.UserDao"></mapper>
    </mappers>

这里写图片描述

注意点:此种方法要求mapper接口和mapper映射文件要名称相同,且放到同一个目录下

  • 批量配置映射:此种方法要求mapper接口和mapper映射文件要名称相同,且放到同一个目录下(直接扫描一个包里边的mapper)
    <mappers>
        <package name ="com.bamzhy.dao"/>
    </mappers>

Mapper映射文件配置

输入映射

简单输入类型:int、string等,只需要在parameterType这里填好就行

这里写图片描述

Bean(简单的POJO类型)

输入参数是一个POJO
这里写图片描述
要求# { } 花括号里边的值(占位符里的单词)和POJO里的对象对应,同时POJO里的对象有getter&setter方法
如果占位符里边的单词和POJO里的成员一致也可以。

POJO里有别的类的引用

有一个包含了User对象的类VO

public class VO {
    User user;
    public User getUser() {
        return user;
    }
    ...
}

我们需要根据user里边的username来确定查找对象

    <!--这是从配置文件里边-->
    <select id="queryByMultiConditions" parameterType="haha" resultType="user">
        SELECT * FROM  tt_user where username like #{user.username};
    </select>

    <!--这是主配置文件里边-->
    <typeAliases>
        <typeAlias type="com.bamzhy.bean.VO" alias="haha"></typeAlias>
        <typeAlias type="com.bamzhy.bean.User" alias="user"/>
    </typeAliases>

测试:

    @Test
    public void test6() throws IOException {
        VO vo = new VO();
        User user = new User();
        user.setUsername("haha1");
        vo.setUser(user);

        List<User> users = dao.queryByMultiConditions(vo);
        System.out.println("i=" + users);
    }
}

以Map作为输入参数的对象

先设置好parameterType和resultType,选择好key的名称(这里是name和pass)

    <!--这是从配置文件里边-->
    <select id="findUserByUsernameAndPassword" parameterType="hashmap" resultType="user">
        SELECT *  FROM  tt_user where username = #{name}  and password = #{pass};
    </select>

new一个hashmap,按照key的名称塞进去值,然后让hashmap作为参数被调用,执行SQL语句

        @Test
    public void test7() throws IOException {
        HashMap<String,String> parameter= new HashMap<>();
        parameter.put("name","haha1");
        parameter.put("pass","12345");

        User userByUsernameAndPassword = dao.findUserByUsernameAndPassword(parameter);

        System.out.println(userByUsernameAndPassword);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章