新增
前面已写... ,实际为调用 sqlSession.insert()
方法
查询
精确查询
查询结果只有一个
映射文件
<?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 cityspace="mybatis_test.CitiesMapper"> <resultMap id="citiesMap" type="mybatis_test.Cities"> ... </resultMap> <!-- resultMap是返回值类型,为上面定义的resultMap标签的id --> <select id="selectById" parameterType="int" resultMap="citiesMap"> select * from cities where id=#{id}; </select> </mapper>
DAO层方法
查询结果只有一个对象,使用自动调用sqlSession.SelectOne
方法
public interface CitiesMapper { Cities selectById(int id) throws Exception; } public class CitiesTest { @Test public void selectByIdTest(){ SqlSession sqlSession= MybatisUtil.getSqlSession(); CitiesMapper citiesMapper=sqlSession.getMapper(CitiesMapper.class); try { //自动调用`sqlSession.SelectOne`方法 Cities cities=citiesMapper.selectById(2); sqlSession.commit(); System.out.println(cities.getCity()); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); }finally { //关闭sqlSession MybatisUtil.closeSqlSession(); } } }
查询结果有多个
映射文件
<!-- 返回值应该是List<Student>,但是resultMap只需写集合中的类型就行 --> <select id="findAll" resultMap="citiesMap"> select * from cities; </select>
DAO层方法
查询结果有多个对象,自动调用sqlSession.SelectList
方法
分页查询(范围查询)
映射文件
<!-- 分页查询,参数有多个,使用map接收参数 --> <select id="pageFind" parameterType="map" resultMap="citiesMap"> <!-- 根据key自动找到对应Map集合的value --> select * from cities limit #{start},#{end}; </select>
DAO层代码
分页是需要多个参数的,当需要接收多个参数的时候,可以使用Map集合来装载
@Test public void pageFindTest(){ SqlSession sqlSession= MybatisUtil.getSqlSession(); CitiesMapper citiesMapper=sqlSession.getMapper(CitiesMapper.class); HashMap<String,Integer> map=new HashMap<String, Integer>(); map.put("start",2); map.put("end",3); try { List<Cities> cities=citiesMapper.pageFind(map); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); }finally { MybatisUtil.closeSqlSession(); } }
删除
映射文件
<!-- 无返回值 --> <delete id="delete" parameterType="int"> delete from cities where id=#{id}; </delete>
DAO层方法,调用 sqlSession.delete()
方法
修改
映射文件
<!-- 无返回值 --> <update id="update" parameterType="mybatis_test.Cities"> update cities set city=#{city} where id=#{id}; </update>
DAO层方法,调用 sqlSession.update()
方法