Mybatis——实现CRUD

本文详细介绍MyBatis框架下动态SQL的实现方法,包括所有数据查询、简写SQL及动态SQL的应用,如条件查询与动态更新等。通过具体示例展示了如何在映射文件中配置SQL语句,并在测试函数中调用。

1.实现查询所有的数据:

在映射文件中:

<select id="listAll" resultType="mytest.domain.User">
        select  *  from user
</select>

在测试函数中

@Before

public void initFactory() throws IOException {
        //配置文件
        String resource = "sqlMapConfig.xml";
        //定义读取配置文件的输入流,对于输入流和输出流【针对于应用程序来说是输入还是输出】
        InputStream in = Resources.getResourceAsStream(resource);
        //获取sqlSessionFactory
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
    
    }

@Test
    public void doSelAll(){
        //获取到session
        SqlSession session = sqlSessionFactory.openSession();
        //根据不同的方法进行不同的操作,从而获取到不同的结果 【参数为:命名空间+方法名称】
        List<User> list = session.selectList("mytest.domain.User.listAll");
        
        System.out.println("总记录个数:"+list.size());
    }

2.实现简写的sql

在映射文件中

<sql id="cols">
        id,name,age,address
</sql>

<select id="listAll" resultType="mytest.domain.User">
        select   <include refid="cols"></include>  from user
</select>

3.实现动态的sql,适用于条件查询 和动态更新

例如 条件查询

在映射文件中

<select id="getForCondition" parameterType="mytest.domain.User" resultType="mytest.domain.User">
        select <include refid="cols"></include> from user where 1=1
        <if test="name !=null">
            and name like "%"#{name}"%"
        </if>
        <if test="address !=null">
            and address = #{address}
        </if>

</select>

利用<if>进行判断,其中的where 1=1 也可以使用<where></where>标签进行替换

在测试函数中

    @Test
    public void doSelForCondition(){
        SqlSession session = sqlSessionFactory.openSession();
        //创建user,封装查询条件
        User user = new User();
        user.setName("赵");
        user.setAddress("长沙");
        List<User> list = session.selectList("mytest.domain.User.getForCondition", user);
        System.out.println(list.size());
    }

例如动态更新

在映射文件中利用<set>和<if>控制条件

<!-- 动态更新 -->
    <update id="updateChoose" parameterType="mytest.domain.User">
        update user
        <set>
            <if test="name!=null">
                name=#{name},
            </if>
            <if test="age !=null">
                age=#{age},
            </if>
            <if test="address !=null">
                address =#{address},
            </if>
        </set>
        where id =#{id}
    </update>

在测试函数中

//动态更新
    @Test
    public void doUpdateChoose(){
        SqlSession session = sqlSessionFactory.openSession();
        User user =new User();
        user.setName("赵小六");
        user.setId("4");
        int num = session.update("mytest.domain.User.updateChoose", user);
        session.commit();
        System.out.println("改动的行:"+num);
    }

 

 

 

 

 

转载于:https://my.oschina.net/u/2870118/blog/727507

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值