MyBatis框架学习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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框架学习的主要内容,如果未能解决你的问题,请参考以下文章