美文网首页
mybatis映射文件

mybatis映射文件

作者: dillqq | 来源:发表于2019-11-04 18:51 被阅读0次

使用if

<select id="fillAll" resultType="com.User.User" parameterType="com.User.User">
    select * from test1 where 1=1
    <if test="name != null">
      and  name = #{name}
    </if>
    <if test="id != null">
        and id = #{id}
    </if>
</select>

测试文件

public class testMapper {
@Test
public void test() throws IOException {
    InputStream in = Resources.getResourceAsStream("SqlConfigMap.xml");
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    IDao iDao = sqlSession.getMapper(IDao.class);
    User user = new User();
    user.setName("hao");
    user.setId(5);
    List<User> users = iDao.fillAll(user);
    for (User u: users
    ) {
        System.out.println(u);

    }
    sqlSession.close();;
    in.close();
}
}

使用where标签

<select id="findCondition" resultType="com.User.User" parameterType="com.User.User">
    select * from test1
    <where>
    <if test="name != null">
      and  name = #{name}
    </if>
    <if test="id != null">
        and id = #{id}
    </if>
    </where>
</select>

实现selsect * from test where id in(2,3,4);

  package com.User;

  import java.util.List;

  /**
 * @Author: zheng
 * @Data :2019/11/4  18:26
 */
public class Queryvo {
List<Integer> i;

public List<Integer> getI() {
    return i;
}

public void setI(List<Integer> i) {
    this.i = i;
}
}

持久层

package com.Dao;

import com.User.Queryvo;
import com.User.User;

import javax.jws.soap.SOAPBinding;
import java.util.List;

/**
 * @Author: zheng
 * @Data :2019/11/4  12:13
 */
public interface IDao {
List<User> fillAll();
User        selectById();
List<User>  selectByName();
List<User>   findCondition(User user);
List<User>   findByIdIn(Queryvo vo);
}

主配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

<properties resource="db.properties">
</properties>
<environments default="mysql">
    <environment id="mysql">
        <transactionManager type="jdbc"></transactionManager>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>

<mappers>
    <mapper resource="com/dao/Sqlmapper.xml"></mapper>
</mappers>
</configuration>

映射文件

  <?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="com.Dao.IDao">

<!--当时使用resultMap类型的配置是要导入resultMap属性中-->


<select id="fillAll" resultType="com.User.User" >
    select * from test1 where 1=1
</select>

<select id="findByIdIn" resultType="com.User.User" parameterType="com.User.Queryvo">
    select * from test1
    <where>
        <if test="i != null and i.size()>0">
            <foreach collection="i" open="and id in(" close=")"  item="id" separator=",">
            <!--这个id指的是item的名字-->
                #{id}
            </foreach>
        </if>
    </where>
</select>


</mapper>

测试文件

 @Test
public void test2() throws IOException {
    InputStream in = Resources.getResourceAsStream("SqlConfigMap.xml");
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    IDao iDao = sqlSession.getMapper(IDao.class);
    Queryvo queryvo= new Queryvo();
    List<Integer>  integers = new ArrayList<Integer>();
    integers.add(25);
    integers.add(5);
    integers.add(4);
    queryvo.setI(integers);

    List<User> users = iDao.findByIdIn(queryvo);
    for (User u: users
    ) {
        System.out.println(u);

    }
    sqlSession.close();;
    in.close();
}

使用sql标签取消重复SQL语句,在<select>这类标签中可以用<include refid="selectSql"></include>导入

映射文件

<?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="com.Dao.IDao">

<!--当时使用resultMap类型的配置是要导入resultMap属性中-->

<sql id="selectSql">
    select * from test1
</sql>
<select id="fillAll" resultType="com.User.User" >
    <!--select * from test1 w-->
    <include refid="selectSql"></include>
</select>

<select id="findCondition" resultType="com.User.User" parameterType="com.User.User">
    <include refid="selectSql"></include>
    <where>
        <if test="name != null">
            and  name = #{name}
        </if>
        <if test="id != null">
            and id = #{id}
        </if>
    </where>
</select>





<select id="findByIdIn" resultType="com.User.User" parameterType="com.User.Queryvo">
    <!--select * from test1-->
    <include refid="selectSql"></include>
    <where>
        <if test="i != null and i.size()>0">
            <foreach collection="i" open="and id in(" close=")"  item="id" separator=",">
            <!--这个id指的是item的名字-->
                #{id}
            </foreach>
        </if>
    </where>
</select>


</mapper>

测试文件

  /**
 * @Author: zheng
 * @Data :2019/11/4  12:14
 */
public class testMapper {
@Test
public void test() throws IOException {
    InputStream in = Resources.getResourceAsStream("SqlConfigMap.xml");
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    IDao iDao = sqlSession.getMapper(IDao.class);
    User user = new User();
    user.setName("hao");
    user.setId(5);
    List<User> users = iDao.findCondition(user);
    for (User u: users
    ) {
        System.out.println(u);

    }
    sqlSession.close();;
    in.close();
}

@Test
public void test2() throws IOException {
    InputStream in = Resources.getResourceAsStream("SqlConfigMap.xml");
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    IDao iDao = sqlSession.getMapper(IDao.class);
    Queryvo queryvo= new Queryvo();
    List<Integer>  integers = new ArrayList<Integer>();
    integers.add(25);
    integers.add(5);
    integers.add(4);
    queryvo.setI(integers);

    List<User> users = iDao.findByIdIn(queryvo);
    for (User u: users
    ) {
        System.out.println(u);

    }
    sqlSession.close();;
    in.close();
    }
    }

相关文章

网友评论

      本文标题:mybatis映射文件

      本文链接:https://www.haomeiwen.com/subject/lcwrbctx.html