• 编写接口
  • 编写对应映射(mapper)中的sql语句
  • 测试

namespace:命名空间,相当于绑定一个对应的接口,所欲其中包名要和接口名一致
sql语句写在

  1. //查询全部用户
  2. List<User> getUserList();

单独查询:

//根据ID查询用户
    User getUserById(int id);

在Mapper中编写查询,首先,查询全部用户:

 <select id="getUserList" resultType="com.sy.pojo.User"  >
    select * from mybatis.user
 </select>

只用Id查询用户:

<select id="getUserById" parameterType="int" resultType="com.sy.pojo.User">
    select * from mybatis.user where id = #{id}
</select>

其中id是namespace下面唯一的标识符 即方法名,resultType则是sql语句的返回值
接口中的方法名与映射文件中的SQL语句ID 一一对应

然后编写测试即可:

 @Test
    public void  test(){
        //第一步:获得SqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        try{

            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = mapper.getUserList();
            for (User user : userList) {
                System.out.println(user);
            }
        }catch (Exception e){
            e.printStackTrace();//打印异常输出
        }finally {
            sqlSession.close();
        }
        }

    @Test
    public void getUserById(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);

        sqlSession.close();
    }

try catch是标准格式写法

2. Insert增

接口:

//insert一个用户
    int addUser(User user);

编写sql 语句:

 <insert id="addUser" parameterType="com.sy.pojo.User">
    insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});
 </insert>

parameterType是返回参数类型,此处返回的是类,即user
对象中的属性,可以直接取出来,用#{}格式
编测试:

 //增删改需要提交事务
    @Test
    public void  addUser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);


        int res = mapper.addUser(new User(4,"哈哈","123456"));//插入数据
        if (res>0){
            System.out.println("插入好了");
        }

        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }

//增删改需要提交事务

3.delete删

接口:

//删除用户
    int deleteUser(int id);

编写sql语句:

 <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id = #{id};
    </delete>

测试:

@Test
    public void deleteUser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser(4);
        sqlSession.commit();
        sqlSession.close();

    }

4.update改

接口:

//修改用户
    int updateUser(User user);

编写sql语句:

<update id="updateUser" parameterType="com.sy.pojo.User">
    update  mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
</update>

测试:

@Test
    public void updateUser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser(new User(4,"哦哈","123321"));

        sqlSession.commit();
        sqlSession.close();

    }

map可以用来传递参数