Mybatis使用(下)

接Mybatis 使用(上)

一、创建Dao层

1.给Member 类添加带参和无参的构造函数

public Member() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Member(Integer member_id, String uname, String password, String email, Integer sex, String mobile,
            Timestamp regtime, Timestamp lastlogin, String image) {
        super();
        this.member_id = member_id;
        this.uname = uname;
        this.password = password;
        this.email = email;
        this.sex = sex;
        this.mobile = mobile;
        this.regtime = regtime;
        this.lastlogin = lastlogin;
        this.image = image;
    }

2.创建Dao 接口

package com.hanzhen.edu.ssmtest1.dao;

import java.util.List;
import java.util.Map;

import com.hanzhen.edu.ssmtest1.entity.Member;

public interface MemberDao {
    public int save(Member member);//增
    public List<Member> findAll();//查
    public int updatePwdById(Map map);//改
    public int deleteById(int member_id);//删


}

3.测试save()

public class TestMemberDao {
    //获取sqlSeesion
    SqlSession session=MybatisUtil.getSqlSession();
    MemberDao memberDao=session.getMapper(MemberDao.class);
    @Test
    public void testSave() {
        Member member=new Member(null,"王五","123456",
                "[email protected]",0,"123456789",null,null,"");
        memberDao.save(member);
        session.commit();
        session.close();

    }


}

4.测试结果

这里写图片描述

5.测试findAll()

    @Test
    public void testFindAll() {
        List<Member>members=memberDao.findAll();
        for(Member member:members) {
            System.out.println(member);
        }
        session.close();
    }

6.测试结果

这里写图片描述

二、动态SQL部分

1.创建会员地址表

create table ms_member_address(
address_id int not null auto_increment,
member_id int not null,
province varchar(50),
city varchar(50),
region varchar(50),
addr text ,
mobile varchar(50) not null,
receiver varchar(50) not null,
creatime timestamp not null default current_timestamp,
modifytime timestamp not null default current_timestamp on update current_timestamp ,
primary key(address_id)
)engine=InnoDB default charset=utf8;

这里写图片描述

2.创建MemberAddress相关实体类,Dao接口,Sql 映射文件,过程如上一致,不赘述。

3.添加测试数据

配置文件中加入插入语句

<!-- 插入数据 -->
<insert id="save"
parameterType="com.hanzhen.edu.ssmtest1.entity.MemberAddress"
useGeneratedKeys="true" keyProperty="address_id">
insert into ms_member_address(address_id,member_id,province,city,
region,addr,mobile,receiver,creatime,modifytime)values(#{address_id}, 
#{member_id},#{province},#{city},
#{region}, #{addr}, #{mobile}, #{receiver},#{creatime}, #{modifytime})

</insert>

新建Test函数

    @Test
    public void insertMemberAdress() {
        MemberAddress m1=new MemberAddress(null,1,"广东省","深圳市","南山区",
        "西丽","12345678910","张二",null,null);
        MemberAddress m2=new MemberAddress(null,1,"山东省","济宁市","任城区",
        "中兴","12345678910","李明",null,null);
        MemberAddress m3=new MemberAddress(null,1,"黑龙江省","哈尔滨市市","南岗区",
        "南岗","12345678910","王二狗",null,null);
        addressDao.save(m1);
        addressDao.save(m2);
        addressDao.save(m3);

        session.commit();
        session.close();
    }

多插入几条数据

这里写图片描述

4.测试动态if语句

配置文件写入

<!-- 动态ifSQL语句测试 -->
<select id="dynamicIfTest"
 parameterType="com.hanzhen.edu.ssmtest1.entity.MemberAddress"
 resultType="com.hanzhen.edu.ssmtest1.entity.MemberAddress">
 select * from ms_member_address where member_id=#{member_id}
 <if test="province!=null">
 and province=#{province}
 </if>
<if test="receiver!=null">
and receiver like #{receiver}
</if> 
</select>

测试函数

    @Test
    public void testDynamicIf() {
        MemberAddress ma=new MemberAddress();
        ma.setMember_id(1);
        ma.setProvince("广东省");
        ma.setReceiver("%张%");
        List<MemberAddress> mas=addressDao.dynamicIfTest(ma);

        for(MemberAddress ma1:mas) {
            System.out.println(ma1);
        }
    }

测试结果
这里写图片描述

5.choose,trim,where,set,foreach,等按上述流程,很容易实现,不赘述。

猜你喜欢

转载自blog.csdn.net/hanzhenbushihu/article/details/80754145