版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zw524362419/article/details/78939973
mybatis mapper使用方法
mapper方式的组成部分:pojo.java、mapper.java(相当于传统的statementid的dao接口)和mapper.xml
具体实现
重点:
mapper使用方式要遵循以下四个规范:
- mapper.xml的namespace的ID要和mapper的包路径一样
如下
<mapper namespace="com.cmhy.mapper.BusinessApplyMapper">
- mapper.java的方法名要和mapper.xml中的statementid一致
- mapper.java的方法输入参数要和mapper.xml中的paramterType类型一致
- mapper.java的方法的返回值要和mapper.xml中的resultType类型一致
细节如下:
2.1 pojo.java如下
@Getter
@Setter
@ToString
public class BusinessApply {
private Integer id;
private String name;
private String businessNo;
private String businessType;
private Integer businessSum;
}
2.2 mapper.xml如下
<?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.cmhy.mapper.BusinessApplyMapper">
<select id="findByNo" parameterType="java.lang.String"
resultType="com.cmhy.model.BusinessApply">
select * from business_apply where business_no = #{value}
</select>
<select id="findByName" parameterType="java.lang.String"
resultType="com.cmhy.model.BusinessApply">
select * from business_apply where name like '%${value}%'
</select>
<select id="findIdByName" parameterType="java.lang.String"
resultType="java.lang.Integer">
select id from business_apply where name like #{value}
</select>
<update id="updateById" parameterType="int">
update business_apply set business_sum = 12.00 where id = #{value}
</update>
<update id="deleteById" parameterType="int">
delete from business_apply where id = #{value}
</update>
</mapper>
2.3 mapper.java文件如下:
package com.cmhy.mapper;
import java.util.List;
import com.cmhy.model.BusinessApply;
public interface BusinessApplyMapper {
public BusinessApply findByNo(String businessNo);
public List<BusinessApply> findByName(String name);
public List<Integer> findIdByName(String name);
public void updateById(Integer id);
public void deleteById(Integer id);
}
2.4 测试类如下:
package com.cmhy.dao;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.cmhy.mapper.BusinessApplyMapper;
public class BusinessApplyDaoTest {
private SqlSessionFactory sqlSessionFactory;
@Before
public void sqlSessionFactory() throws IOException {
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
}
@Test
public void testFindByNo() {
}
@Test
public void testFindByName() {
SqlSession sqlSession = sqlSessionFactory.openSession();
BusinessApplyMapper baMapper = sqlSession.getMapper(BusinessApplyMapper.class);
baMapper.findByName("个贷");
System.out.println("***********"+baMapper.findByName("个贷"));
sqlSession.close();
}
@Test
public void testFindIdByName() {
}
@Test
public void testUpdateById() {
}
@Test
public void testDeleteById() {
}
}
总结
mapper.java接口方法参数只能有一个,所以使用包装类型的pojo满足不同的业务需求。系统使用不是太方便。
注意:service层的方法入参不建议使用包装类型