MyBatis案例

1.查询分页数据:

a.使用注解
mapper:

 <select id="selectBlogByPage2" resultMap="blogResultMap">
        select * from blog limit #{offset},#{pagesize}
 </select>

  接口:注解的value值要和mapper的占位参数一致。

List<Blog> selectBlogByPage2(@Param(value="offset") int offset, @Param(value="pagesize") int pagesize);

b.使用Map

mapper中的参数占位符要和测试中的map中的key一一对应

mapper:

 <select id="selectBlogByPage2" resultMap="blogResultMap">
        select * from blog limit #{offset},#{pagesize}
     </select>  

接口:

List<Blog> selectBlogByPage3(Map<String,Object> map);

测试:

        @Test
	public void testSelectBlogBySort(){
		SqlSession session=MyBatisUtil.getSqlSession();
		BlogMapper blogMapper=session.getMapper(BlogMapper.class);
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("offset", 2);
		map.put("pagesize", 3);
		List<Blog> blogList=blogMapper.selectBlogByPage3(map);
		session.close();
		
		System.out.println(blogList);
	}
	

 

2.插入-获取刚刚插入的id(自增id) 

方式一:在mapper中配置 insert节点的属性 useGeneratedKeys="true" keyProperty=" "

    <insert id="insertBlog" parameterType="Blog"  useGeneratedKeys="true" keyProperty="id">
         insert into blog
         (title,author_id,state,featured,style)
         values(
           #{title},#{authorId},#{state},#{featured},#{style}
         )
     </insert>  

方式二:

在全局配置文件配置settings选项

 <settings>
    <setting name="useGeneratedKeys" value="true"/>
  </settings>  

并且在mapper的insert节点配置属性 keyProperty=" "

方式三:适用于没有自增属性的数据库

<insert id="insertmMysql" parameterType="Blog">
       <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
          SELECT LAST_INSET_ID()
       </selectKey>
         insert into blog
         (title,author_id,state,featured,style)
         values(
           #{title},#{authorId},#{state},#{featured},#{style}
         )
     
     </insert>

 

3.批量删除
mapper:

    <delete id="deleteBlogList" parameterType="java.util.List">
        delete from blog where id in
        <foreach collection="list" item="item" open="(" close=")" separator=",">
           #{item}
        </foreach>
     </delete>
       

接口:

int deleteBlogList(List<Integer> ids)  

测试:

        @Test
	public void testDeleteBlogList(){
		SqlSession session=MyBatisUtil.getSqlSession();
		BlogMapper blogMapper=session.getMapper(BlogMapper.class);
		
		List<Integer> ids=Arrays.asList(4,5,7);
		int blogList=blogMapper.deleteBlogList(ids);
		
		session.commit();
		session.close();
		
		System.out.println(blogList);
	}

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

posted @ 2020-03-22 20:53  一场屠夫的战争  阅读(126)  评论(0编辑  收藏  举报