首页 > 代码库 > MyBatis框架学习(二)

MyBatis框架学习(二)

MyBatis中配置文件相关问题

输入参数

在传统的数据库查询操作中,在sql语句中往往需要一些参数。

1、基本数据类型

输入参数为基本数据类型时,不考虑占位符名称,将输入参数都设置给占位符。

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="goods">
    <select id="getByUuid" parameterType="int" resultType="cn.sxt.mybatis.vo.GoodsModel">
        select * from tbl_goods where uuid=#{uuid}
    </select>
</mapper>

 

测试代码:

package cn.sxt.mybatis.test;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import cn.sxt.mybatis.vo.GoodsModel;

public class TestApp {
    public static void main(String[] args) throws IOException {
        String resource = "SqlMapConfig.xml";
        //根据全局配置文件得到输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //根据输入流创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //根据SqlSessionFactory创建sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        
        //操作
        GoodsModel gm = sqlSession.selectOne("goods.getByUuid", 1);
        System.out.println(gm);
        
        sqlSession.close();
    }
}

 

然而当有多个参数时,输入的那一个参数将会被分配给所有的占位符。

2、pojo类型

输入参数为pojo类型时,考虑占位符名称,根据占位符拼接出对应的get方法,到pojo对象中找get方法,找到没有问题,没有找到抛出异常。

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="goods">
    <select id="getByUuid"  resultType="cn.sxt.mybatis.vo.GoodsModel">
        select * from tbl_goods where uuid=#{uuid} and name=#{name}
    </select>
</mapper>

 

 测试代码:

 

package cn.sxt.mybatis.test;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import cn.sxt.mybatis.vo.GoodsModel;

public class TestApp {
    public static void main(String[] args) throws IOException {
        String resource = "SqlMapConfig.xml";
        //根据全局配置文件得到输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //根据输入流创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //根据SqlSessionFactory创建sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        
        //操作
        GoodsModel goodsModel = new GoodsModel();
        goodsModel.setUuid(1);
        goodsModel.setName("2");
        GoodsModel gm = sqlSession.selectOne("goods.getByUuid", goodsModel);
        System.out.println(gm);
        
        sqlSession.close();
    }
}

 

 

 

3、Map类型

输入参数为Map类型,考虑占位符名称,根据占位符名称去Map对象中找到对应的key,找到没有问题,没有找到抛出异常。

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="goods">
    <select id="getByUuid"  resultType="cn.sxt.mybatis.vo.GoodsModel">
        select * from tbl_goods where uuid=#{uuid} and name=#{name}
    </select>
</mapper>

 

测试代码:

package cn.sxt.mybatis.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import cn.sxt.mybatis.vo.GoodsModel;

public class TestApp {
    public static void main(String[] args) throws IOException {
        String resource = "SqlMapConfig.xml";
        //根据全局配置文件得到输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //根据输入流创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //根据SqlSessionFactory创建sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        
        //操作
        Map<String,Object> map = new HashMap<>();
        map.put("uuid", 1);
        map.put("name", "2");
        
        GoodsModel gm = sqlSession.selectOne("goods.getByUuid", map);
        System.out.println(gm);
        
        sqlSession.close();
    }
}

 

返回类型

无论是增删改查,在操作完数据库后,往往要返回一些结果。

1、基本类型

将相对应的ResultType做出相对应的修改,如String类型时:resultType="Java.lang.String"。

2、pojo类型

当查询的字段名和属性名一致时,resultType="类的全限定名"

当查询的字段名和属性名不一致时,在SQL语句中设置别名,让他们一致。

3、Map类型

 

MyBatis框架学习(二)