mybatis学习总结(一)

mybatis学习总结(一)

主要展示了mybatis框架的基本流程,和关键组件,以一个简单的小栗子走通整个流程


1、三大基本组价

  1. mybatis-config.xml
  2. UserMapper.xml
  3. UserMapper.java(此为mapper接口类,里面有dao层的方法,包含基本pojo: User.java)

代码结构参考如下:
这里写图片描述

mybatis-config.xml

这是mybatis的总体配置文件,用于配置数据源、配置mapper接口类xxxMapper.java、配置与mapper接口类相对应的映射配置文件 xxxMapper.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>
      <!--properties中还可以配置一些属性名和属性值  -->
        <!-- <property name="jdbc.driver" value=""/> -->
    </properties>

<!-- 全局配置参数,需要时再设置 -->
    <!-- <settings> 
    </settings> -->

<!-- 别名定义 -->
    <typeAliases>
    <!-- 单个别名定义
    <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>  -->
        <!--指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) -->
        <package name="pojo"/>   <!-- 包下的所有类被自动识别 -->
    </typeAliases>

    <!-- 数据源配置(和spring整合后按spring的来,这里的被弃置)  -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123123"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载映射配置文件 -->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
        <!-- 也可以以package的形式批量加载,原理同上 -->
    </mappers>

</configuration>

UserMapper.xml

这是针对具体pojo及dao类所对应的sql配置文件,这里面写具体的sql业务代码,根据mybatis内置的映射规则,将sql语句与dao中的方法建立联系;
代码及部分属性解释如下:

<?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="pojo.User">  

    <!-- 根据用户名称模糊查询用户信息,可能返回多条
    resultType:指定就是单条记录所映射的java对象 类型
    #{}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中。
    使用${}拼接sql,引起 sql注入
    #{value}:接收输入 参数的内容,
    -->
    <select id="findUserByName" parameterType="java.lang.String" resultType="pojo.User">
        select * from user where name like '%#{value}%'
    </select>

    <select id="listAllUsers" resultType="pojo.User">
        select * from user
    </select>

</mapper>

一共有4点需要匹配的:
1、namespace属性匹配对应的接口类全限定名;
2、id属性 匹配接口类的对应的方法名;
3、parameterType属性匹配方法的参数类型;
4、resultType属性匹配方法的返回值类型
这样UserMapper.xml映射文件与UserMapper.java接口类,就可以映射匹配成功

UserMapper.java

这是mapper接口类,里面有具体的dao层的方法,每个方法对应一个映射文件中的sql语句标签,具体如下:

package mapper;

import java.util.List;
import pojo.User;

/**
 * @author xxx
 * @discription User类的mapper代理接口
 */

interface UserMapper {

    public List<User> findUserByName(String name);

    public List<User> listAllUsers();

}

可以看出方法与映射文件一一对应。
(pojo类自己补充,这里不贴了)


测试代码

package mybaitsDemoTest;

import static org.junit.Assert.*;

import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionException;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import pojo.User;

public class testcase {

    private static SqlSessionFactory ssf;
    private static SqlSession session;

    @Before
    public void setUp() throws Exception {
        //
        String resource = "config/mybatis-config.xml";
        InputStream is = Resources.getResourceAsStream(resource);
        //根据配置文件流创建会话工厂
        ssf = new SqlSessionFactoryBuilder().build(is);
        //打开一个会话
        session = ssf.openSession();
    }

    @Test
    public void test() {
        List<User> users = session.selectList("mapper.UserMapper.findUserByName", 'a');
        System.out.println(users);
        assertNotNull(users);
    }

}


成功通过测试,说明整个流程已经走通,mybatis基本框架完成!

猜你喜欢

转载自blog.csdn.net/u014256815/article/details/80890869