MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三)

发布时间:2017-1-17 10:47:27 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三) ",主要涉及到MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三) 方面的内容,对于MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三) 感兴趣的同学可以参考一下。

一、字段名与属性名(数据库的名字)不一样怎么办?

  方案一:在小配置中配置一个resultMapper

<!--方案一:resultMapper 字段名与属性名不一致 -->
     <resultMap type="Student" id="StudentMapper">        <result column="stuname2" property="stuname"/>    </resultMap>    <!-- 查询所有 --> <select id="findAll" resultMap="StudentMapper">      select * from student    </select>

  方案二:在小配置中的查询语句用as

<!-- 方案二:as别名的方式 --> <select id="findAll" resultType="Student">      select stuname2 as stuname from student    </select>

 二、Mapper动态代理剔除实现类

第一步改动的地方是小配置的<mapper namespace="cn.happy.dao.IStudentDAO">写到接口

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.happy.dao.IStudentDAO">  <!-- 方案二:as别名的方式 --> <select id="findAll" resultType="Student">      select stuname2 as stuname from student    </select></mapper>

第二步是在测试类调用接口的时候用getMapper获取一个接口实现类

public class MyTest {    IStudentDAO dao;    @Before    public void initData() throws IOException{        SqlSession session = MybatisUtil.getSession();        //动态踢出实现类        //首先要改StudentDAO.xml改成<mapper namespace="cn.happy.dao.IStudentDAO">        dao=session.getMapper(IStudentDAO.class);    }        /**     * selectALl学生     * @throws IOException     */        @Test    public void findAll() throws IOException{        List<Student> list = dao.findAll();        for (Student student : list) {            System.out.println(student.getStuname());            /*System.out.println(student.getStuage());*/        }            }    }

三、用Map集合取值和使用索引号

(一)用map集合获取值

  1在接口IStudentDAO定制一个方法

 //多条件查询封装成map   public List<Student> findStudentMore(Map<String, Object> map);

2在小配置中id=“findStudentMore”要和接口的方法法名要一样

 <!-- 多条件查询--><select id="findStudentMore" resultType="Student">  <!--   mysql数据库 -->      <!--  select * from student where stuname like '%' #{stuname} '%' and stuage>#{stuage} -->     <!--   orcl数据库 -->     select * from student where stuname like '%'||#{stuname}||'%' and stuage>#{stuage}    </select>

3在测试类中

/**     * 多条件查询     * @throws IOException     */        @Test    public void findStudentMore(){                Map<String, Object> maplist=new HashMap<String, Object>();        maplist.put("stuname", "123");        maplist.put("stuage", 11);        List<Student> list = dao.findStudentMore(maplist);        for (Student student : list) {            System.out.println(student.getStuname());        }            }

(二)使用索引

1在接口IStudentDAO定制一个方法

//多条件查询引号   public List<Student> findStudentByCondition(String name,int age);

2在小配置中id=“findStudentMore”要和接口的方法法名要一样

<select id="findStudentByCondition" resultType="Student">        <!--  mysql数据库                 select * from student where stuname like '%' #{0} '%' and stuage>#{1}        orcl数据库 -->        select * from student where stuname like '%'||#{0}||'%' and stuage>#{1}            </select>

3在测试类中

@Test    public void findStudentByCondition() throws IOException{        String name="人";        int age=12;        List<Student> list = dao.findStudentByCondition(name,age);        for (Student student : list) {            System.out.println(student.getStuname());        }

上一篇:Android判断GPS是否开启和强制帮用户打开GPS
下一篇:使用TortoiseGit对android studio工程进行代码版本控制

相关文章

相关评论