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类型

时间: 2024-10-14 06:51:57

MyBatis框架学习(二)的相关文章

MyBatis框架学习二

增删改查操作 mapper接口本质就是原来的Dao接口,知识为了方便我们的书写,一个mapper接口对应一个mapper映射文件 将UserMapper更名为UserDao,说明本质 修改对应的mapper映射文件的namespace属性,对应上接口. 编写接口 1 package com.like.dao; 2 3 import com.like.pojo.User; 4 5 import java.util.List; 6 7 public interface UserDao{ 8 //获取

Struts2框架学习(二) Action

Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法,返回结果,界面跳转. 拦截器解析请求路径,获取Action的名称,到配置文件中查找action的完整类名,利用反射创建对象. 每请求一次,就创建一个对象,所以action是多例的,也是线程安全的. 2,关系 请求的路径和配置文件的对应关系: 配置文件中包

Android Afinal框架学习(二) FinalActivity 一个IOC框架

框架地址:https://github.com/yangfuhai/afinal 对应的源码: net.tsz.afinal.annotation.view.* FinalActivity FinalActivity是一个基础类,结合注解实现了,依赖注入(view的资源id,常用的监听器), 利用set方式注入 完全注解方式就可以进行UI绑定和事件绑定,无需findViewById和set event Listener 这个过程:initInjectedView>findViewById.set

Mybatis 框架学习

Mybatis 一. 入门 1. JDBC 回顾 (1). 准备数据库 新建 mybatis_learn 数据库 执行 sql 脚本 1 -- ---------------------------- 2 -- Table structure for `Blog` 3 -- ---------------------------- 4 DROP TABLE IF EXISTS `Blog`; 5 CREATE TABLE `Blog` ( 6 `id` int(11) NOT NULL AUTO

Mybatis框架学习03

写在前面 本文接https://www.cnblogs.com/wushenjiang/p/12506992.html,至此mybatis的学习已经基本完成.近一个月会进行Android的冲刺学习,所以将SSM的学习暂且滞后. 高级映射 高级映射主要分为一对一,一对多,多对多,延迟加载等.以下分别进行解释: 一对一查询(resultType实现) 需求 首先我们要提出一个需求,以便我们开展学习.需求:查询订单信息,关联查询创建订单的用户信息. po的编写 这里我们直接继承原订单类,并添加新的属性

MyBatis框架学习(一)

MyBatis介绍 MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并改名为MyBatis.2013年11月迁移到Github.iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO). 当我们在DAO层使用jdb

MyBatis框架学习

MyBatis框架 1.MyBatis框架简介 目的(最大的作用):实现sql语句和java代码的分离,替代的是mvc模式中的Dao层,是持久层框架. 搭建方式: 1.配置mybatis全局配置文件: a.固定的文件头,根标签为<configuration></configuration>: b.在根标签内存在多个标签,<settings></settings>:设置日志文件打印内容的标签: <typeAliases></typeAlias

Mybatis基础学习(二)&mdash;开发Dao方式

一.原始Dao开发方式 UserDao.java public interface UserDao{ public User findUserByID(Serializable id); public List<User> findUsersByName(String name); } UserDaoImpl.java public class UserDaoImpl implements UserDao{ //SqlSessionFactory是单例存在,不应该在具体实例中创建,需要外部依赖

Android 学习笔记之AndBase框架学习(二) 使用封装好的进度框,Toast框,弹出框,确认框...

PS:渐渐明白,在实验室呆三年都不如在企业呆一年... 学习内容: 1.使用AbActivity内部封装的方法实现进度框,Toast框,弹出框,确认框...   AndBase中AbActivity封装好了许多方法提供我们去使用,使得在使用的时候更加的方便,只需要传递相关参数即可..省去了我们自己使用基础的函数进行构造...   就好比进度框,Toast框,弹出框,确认框...这些基本的东西都在AndBase的AbActivity封装好了...我们只需要传递参数调用其中内部的方法就可以完成这些视