接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);
}
}
测试结果