Mybatis续、Mapper映射器接口规则

蔚落 2022-07-13 07:54 257阅读 0赞

配置一个MyBatis的Cost。查询资费列表的。。
与上面相同。只不过单独抽出来了一个类并定义了一个静态方法来获取Sqlsession

  1. package unity;
  2. import java.io.InputStream;
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  6. public class MyBatisUtil {
  7. public static SqlSession getSession(){
  8. SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  9. //加载SqlMapConfig.xml文件
  10. String conf = "SqlMapConfig.xml";
  11. InputStream configStream = MyBatisUtil.class.getClassLoader().getResourceAsStream(conf);
  12. //获取SqlSessionFactory
  13. SqlSessionFactory factory =builder.build(configStream);
  14. //获取SqlSession
  15. SqlSession session = factory.openSession();
  16. return session;
  17. }
  18. }

分页的话设置SQL语句就是

  1. <select id="findPage" parameterType="int" resultType="entity.Cost">
  2. select * from cost limit #{page},5
  3. </select>

如果想只查询id和name就可以单独写一个sql

  1. <select id="findMap" resultType="Map">
  2. select cost_id,name from cost
  3. </select>

一行对象对应一个map。key是cost_id value是其值

  1. <select id="findMap" resultType="Map">
  2. select cost_id,name from cost
  3. </select>
  4. List<Map<String,Object>> maps=session.selectList("findMap");
  5. for(Map<String,Object> map :maps){
  6. System.out.println(map.get("cost_id")+" "+map.get("name"));
  7. }

这里写图片描述

可以把实体类与数据库字段名不同映射

  1. <select id="findCost" resultMap="costmap">
  2. select cost_id,name,status,creatime from cost
  3. </select>
  4. <resultMap type="entity.CostBean1" id="costmap">
  5. <id property="id" column="cost_id"/>
  6. <result property="name" column="name" />
  7. <result property="status" column="status" />
  8. <result property="creatime" column="creatime" />
  9. </resultMap>
  10. <!--注意ID的写法 -->

resultType默认按名称匹配装载数据

当然还可以用别名
就是在SQL语句中写

  1. select cost_id id from cost

这个cost_id 就是数据库中的字段。但是后面的id是自己定义的bean中的属性,可以这么的用别名来实现对应。

MyBatis
1、返回数据类型
实体对象
a.属性名与字段一致 使用resulteType
b.属性名与字段不一致
给字段使用别名,使他与属性名一致(灵活一些)
使用resultMap替代resultType定义如何装载数据

Map集合
基本值

2.Mapper映射器接口规则

a.根据SQL定义的id属性当接口方法名
就是<select id=”findAll”>的这个id
b.根据SQL定义的parameterType类型当方法参数类型
c.根据SQL定义的resultType类型定义方法的返回类型
(多行使用list<泛型> ;单行使用泛型)
d.将SQL定义文件<mapper>的namespace属性指定成包名.接口名
定义一个Mapper映射器接口

  1. package dao;
  2. import java.util.List;
  3. import java.util.Map;
  4. import entity.Cost;
  5. public interface CostDao {
  6. public List<Cost> findAll();
  7. public List<Cost> finPage(int page);
  8. public List<Map<String,Object>> findMap();
  9. }
  10. SqlSession session = MyBatisUtil.getSession();
  11. //测试Mapper映射接口
  12. CostDao costdao = session.getMapper(CostDao.class);
  13. //根据CostDao接口生成实现对象
  14. System.out.println(costdao.getClass().getName());
  15. List<Cost> list = costdao.findAll();

发表评论

表情:
评论列表 (有 0 条评论,257人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis映射文件Mapper

    前提说明 1. 使用Dao接口+映射文件的方式创建Dao对象 2. 在接口方法参数中可以使用@Param(“别名”)来指定当前参数的名称,在映射文件中使用\\{别名\