增删改查实现

HeJin大约 4 分钟数据库技术Mybatis

1、namespace

namespace中的包名要和Dao/Mapper接口的包名一致!

<?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">
<!--绑定一个对应的dao/mapper接口-->
<!--包名要和Dao/Mapper接口的包名一致-->
<mapper namespace="com.kuang.dao.UserMapper">

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

</mapper>

UserMapper接口

public interface UserMapper {
    /**
     * 获取所有用户
     * @return
     */
    List<User> getUserList();
}

2、select

查询语句。

<?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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">

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

</mapper>

id

对应namespace接口中的方法名。必须完全一致。在命名空间中唯一的标识符,可以被用来引用这条语句。

resultType

sql语句执行的返回值类型。class,基本类型。期望从这条语句中返回结果的类全限定名或别名。 注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个

parameterType

查询传入的参数类型

UserMapper.java接口中新增方法

public interface UserMapper {

    /**
     * 获取所有用户
     * @return
     */
    List<User> getUserList();

    /**
     * 根据传入ID查用户
     * @param id
     * @return
     */
    User getUserById(int id);

}

UserMapper.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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">

    <!--查询所有用户-->
    <select id="getUserList" resultType="com.kuang.pojo.User">
        select * from user
    </select>

    <!--根据传入ID查询用户-->
    <select id="getUserById" resultType="com.kuang.pojo.User" parameterType="int">
        select * from user where id = #{id}
    </select>

</mapper>

测试

@Test
public void test02(){

    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    User user = userMapper.getUserById(2);
    System.out.println(user);

    sqlSession.close();
}

结果

User{id=2, name='张三', pwd='222333'}

Process finished with exit code 0

3、insert

插入数据

UserMapper.java接口中新增一个方法

public interface UserMapper {

    /**
     * 获取所有用户
     * @return
     */
    List<User> getUserList();

    /**
     * 根据传入ID查用户
     * @param id
     * @return
     */
    User getUserById(int id);

    /**
     * 插入一个用户
     * @param user
     * @return
     */
    int addUser(User user);

}

UserMapper.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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">

    <!--查询所有用户-->
    <select id="getUserList" resultType="com.kuang.pojo.User">
        select * from user
    </select>

    <!--根据传入ID查询用户-->
    <select id="getUserById" resultType="com.kuang.pojo.User" parameterType="int">
        select * from user where id = #{id}
    </select>

    <!--插入用户-->
    <insert id="addUser" parameterType="com.kuang.pojo.User">
        insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
    </insert>

</mapper>

测试

@Test
public void test03(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    userMapper.addUser(new User(10,"王五","555555"));
    // 提交事务
    sqlSession.commit();

    sqlSession.close();
}

注意点

增删改必须提交事务,否则sql执行不成功。

4、update

UserMapper.java接口中新增一个方法

public interface UserMapper {

    /**
     * 获取所有用户
     * @return
     */
    List<User> getUserList();

    /**
     * 根据传入ID查用户
     * @param id
     * @return
     */
    User getUserById(int id);

    /**
     * 插入一个用户
     * @param user
     * @return
     */
    int addUser(User user);

    /**
     * 修改用户
     * @param user
     * @return
     */
    int updateUser(User user);

}

UserMapper.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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">

    <!--查询所有用户-->
    <select id="getUserList" resultType="com.kuang.pojo.User">
        select * from user
    </select>

    <!--根据传入ID查询用户-->
    <select id="getUserById" resultType="com.kuang.pojo.User" parameterType="int">
        select * from user where id = #{id}
    </select>

    <!--插入用户-->
    <insert id="addUser" parameterType="com.kuang.pojo.User">
        insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
    </insert>

    <!--修改用户-->
    <update id="updateUser" parameterType="com.kuang.pojo.User">
        update user set name=#{name},pwd=#{pwd} where id=#{id}
    </update>

</mapper>

测试

@Test
public void test04(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    userMapper.updateUser(new User(2,"法外狂徒张三","333333"));

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

    sqlSession.close();
}

注意点

增删改必须提交事务,否则sql执行不成功。

5、delete

UserMapper.java接口中新增一个方法

public interface UserMapper {

    /**
     * 获取所有用户
     * @return
     */
    List<User> getUserList();

    /**
     * 根据传入ID查用户
     * @param id
     * @return
     */
    User getUserById(int id);

    /**
     * 插入一个用户
     * @param user
     * @return
     */
    int addUser(User user);

    /**
     * 修改用户
     * @param user
     * @return
     */
    int updateUser(User user);

    /**
     * 根据ID删除用户
     * @param id
     * @return
     */
    int deleteUser(int id);

}

UserMapper.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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">

    <!--查询所有用户-->
    <select id="getUserList" resultType="com.kuang.pojo.User">
        select * from user
    </select>

    <!--根据传入ID查询用户-->
    <select id="getUserById" resultType="com.kuang.pojo.User" parameterType="int">
        select * from user where id = #{id}
    </select>

    <!--插入用户-->
    <insert id="addUser" parameterType="com.kuang.pojo.User">
        insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
    </insert>

    <!--修改用户-->
    <update id="updateUser" parameterType="com.kuang.pojo.User">
        update user set name=#{name},pwd=#{pwd} where id=#{id}
    </update>

    <!--根据ID删除用户-->
    <delete id="deleteUser" parameterType="int">
        delete from user where id = #{id}
    </delete>

</mapper>

测试

@Test
public void test05(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    int i = userMapper.deleteUser(10);
    // 提交事务
    sqlSession.commit();
    System.out.println(i);
}

结果

1

Process finished with exit code 0

注意点

增删改必须提交事务,否则sql执行不成功。