乐趣区

关于mybatis:Mybatis实现增删改查

​1、CRUD
1.1namespace
namespace 中的包名必须和 Dao/mapper 接口包名统一
1.2select
抉择,查问语句

id: 就是对应的 namespace 中的办法名
resultType:Sql 语句执行的返回值类型
parameterType: 参数类型

编写接口

User getUserById(int id);

编写接口对应的 Mapper 中语句

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

测试:

@Test
    public void getUserById() {
        // 取得 sqlSession 对象
        SqlSession sqlsession = MybatisUtil.getSqlsession();
        // 执行 SQL
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);
        // 敞开 sqlSession
        sqlsession.close();}

1.3Insert

<!-- 对象中的属性能够间接取出来 -->
<insert id="addUser" parameterType="com.aostarit.entity.User">
        insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd})
</insert>

1.4update

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

1.5delete

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

留神点:增删改查须要提交事务
分许谬误:

标签不要匹配谬误:例如:select 标签中必须写 select 语句
resources 绑定 mapper,须要应用门路
程序配置文件必须符合规范!NullPointException,没有注册到资源!输入的 xml 文件中存在中文乱码问题
maven 资源没有导出问题!
mybatis 外围配置文件中 mapper 映射器门路不能带.,须要用 / 代替
<!-- 映射器 -->
<mappers>
    <mapper resource="mapper/UserMapper.xml"/>
</mappers>

2、Map 和含糊查问拓展
2.1 假如咱们的实体类、或者数据库中的表、字段或者参数过多,咱们应该思考应用 Map!

<insert id="addUserMap" parameterType="map">
        insert into mybatis.user (id, name, pwd) values (#{userId},#{userName},#{userPwd})
</insert>
public void addUser2() {
        // 取得 sqlSession 对象
        SqlSession sqlsession = MybatisUtil.getSqlsession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        HashMap<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("userId",10);
        userMap.put("userName","11234");
        userMap.put("userPwd","1234343");
        int result = mapper.addUserMap(userMap);
        if(result>0){System.out.println("插入胜利");
        }
        // 提交事务
        sqlsession.commit();
        // 敞开 sqlSession
        sqlsession.close();}

Map 传递参数,间接在 sql 中取出对象即可
对象传递参数,间接在 sql 中取对象的属性即可
只有一个根本类型参数的状况下,能够间接在 sql 取到!
多个参数用 Map,或者注解!
2.2 含糊查问
1、Java 代码执行的时候,传递通配符 % %

List<User> userLike = mapper.getUserLike("% 李 %");

2、在 sql 拼接中应用通配符!

 <select id="getUserLike" resultType="com.aostarit.entity.User">
        select * from mybatis.user where name like  "%"#{value}"%"
 </select>

退出移动版