mybatis 新增语句_mybatis增删改查

映射文件EmployeeMapper.xml

注意:小于或大于号等可能与如select标签的尖括号(<>)与冲突或者无法识别的时候,可以使用转义字符比如小于号可以使用&It; 等等

另一处理方法,使用CDATA比如:

(在用CDATA的时候,只用把可能产生冲突的那段代码包含就可以了,不要盲目的包含。)

一、查询

1.resultType

//接口

//@MapKey:告诉mybatis封装这个map的时候使用哪个属性作为map的key

@MapKey("lastName")

public Map getEmpByLastNameLikeReturnMap(String lastName);

// 映射文件配置

select * from tbl_employee where last_name like #{lastName}

接口返回类型--->resultType

Map--->map

Map--->Employee(全类名)

注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身

2.resultMap

select * from tbl_employee where id=#{id}

3.association

1)使用association定义关联的单个对象的封装规则

Employee含有属性departmentName即Department对象

SELECT e.id id,e.last_name last_name,e.gender gender,e.d_id d_id,

d.id did,d.dept_name dept_name FROM tbl_employee e,tbl_dept d

WHERE e.d_id=d.id AND e.id=#{id}

2)使用association进行分步查询

Employee含有属性dept即Department对象

association中select指定使用哪个接口中的哪个方法去查询,column指定方法使用哪个字段的值传递参数

-->

select="com.laoyin.mybatis.dao.DepartmentMapper.getDeptById"

column="d_id">

select * from tbl_employee where id=#{id}

and 1=1

4.collection

1)嵌套结果集的方式

SELECT d.id did,d.dept_name dept_name,

e.id eid,e.last_name last_name,e.email email,e.gender gender

FROM tbl_dept d

LEFT JOIN tbl_employee e

ON d.id=e.d_id

WHERE d.id=#{id}

2).分段查询

select="com.laoyin.mybatis.dao.EmployeeMapperPlus.getEmpsByDeptId"

column="{deptId=id}" fetchType="lazy">

select id,dept_name from tbl_dept where id=#{id}

5.鉴别器

Employee含有属性dept即Department对象

select="com.laoyin.mybatis.dao.DepartmentMapper.getDeptById"

column="d_id">

二、插入

1.基本插入语句

insert into tbl_employee(last_name,email,gender)

values(#{lastName},#{email},#{gender})

解释:parameterType指定传入参数Employee对象,#{lastName}直接取到Employee的lastName的属性值

2.获取插入后该条纪录的自增主键的值(mysql数据库支持主键自增)

useGeneratedKeys="true" keyProperty="id" >

insert into tbl_employee(last_name,email,gender)

values(#{lastName},#{email},#{gender})

解释:

useGeneratedKeys="true";使用自增主键获取主键值策略

keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean(Employee)的哪个属性

//代码片段

//openSession是以获取的SqlSession对象

EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);

//测试添加

Employee employee = new Employee(null, "jerry4",null, "1");

mapper.addEmp(employee);

//插入记录后自增的主键值会封装到employee的id属性中

System.out.println(employee.getId());

3.获取插入后该条纪录的自增主键的值(oracle数据库不支持主键自增)

select EMPLOYEES_SEQ.nextval from dual

insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL)

values(#{id},#{lastName},#{email})

解释:before时,selectKey会查询到下一个主键封装给keyProperty指定的javabean的id属性,在使用该id插入纪录,after相反,只是取主键的方法是oracle序列的当前id,建议使用before,因为多人操作时,after拿到的是最后一次执行的id值,信息不正确

三、update

update tbl_employee

set last_name=#{lastName},email=#{email},gender=#{gender}

where id=#{id}

四、delete

delete from tbl_employee where id=#{id}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值