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