Mybatis—CURD以及模糊查询

命名空间namespace:
在这里插入图片描述
配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!

1.查询(select)

select:

接口中的方法名与映射文件中的SQL语句ID 一一对应

  1. id
  2. parameterType
  3. resultType

案例:根据id查询用户

1.写接口(在UserMapper中添加对应的方法)

public interface UserMapper {
    //根据ID查询用户
    User getuserByID(int id);
    }

2.UserMapper.xml配置文件的编写Sql语句

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

3.测试

    @Test
    public void getUserID(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getuserByID(4);
        System.out.println(user);
        sqlSession.close();
    }

注意:根据密码和名字直接查询用户
使用万能的Map方法
1.在接口方法中,直接传递Map;

User getuserByID2(Map<String,Object> map);

2.在编写sql语句的时候,需要传递参数的类型,参数类型是map

    <select id="getuserByID2" resultType="com.xiong.pojo.User" parameterType="map">
        select * from mybatis.user where id = #{userID} and name =#{username};
    </select>

在这里插入图片描述此处的userID,username可以不是数据库里面的字段,用map方法添加就可。

3.在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!

    @Test
    public void getUserID2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map map= new HashMap<String, Object>();
        map.put("userID",2);

        map.put("username","gou");

        User user = mapper.getuserByID2(map);
        System.out.println(user);
        sqlSession.commit();
        sqlSession.close();
    }

在这里插入图片描述总结:如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可

2.插入(insert)

insert
1.在UserMapper中添加对应的方法

int addUser(User user);

2.在UserMapper.xml中添加insert语句

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

3.测试

    @Test
    public void adduser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int i = mapper.addUser(new User(4, "狗哥", "45412331"));
        if(i>0){
            System.out.println("插入成功");
        }
        //记得提交事物
        sqlSession.commit();
        sqlSession.close();
    }

注意点:增、删、改操作需要提交事务!

3.更新(update)

1.编写接口方法

int updateUser(User user);

2.编写接口对应的UserMapper.xml文件中的SQL

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

3.测试(记住一定要提交事物)

    @Test
    public void updateuser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        System.out.println(sqlSession);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int i = mapper.updateUser(new User(5, "hh", "55464545"));
        if(i>0){
            System.out.println("更新成功");
        }

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

4.删除(delete)

1.编写接口方法

int delete(int id);

2.编写对应配置文件的SQL

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

3.测试(记得要提交事物)

    @Test
    public void deleteuser(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        System.out.println(sqlSession);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int i = mapper.delete(4);
        if(i>0){
            System.out.println("更新成功");
        }

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

总结:所有的增删改操作都需要提交事务!

5.模糊查询(like)

直接在sql语句中拼接通配符,会引起sql注入

<!--    模糊查询-->
    <select id="getUserListByLike" resultType="com.xiong.pojo.User">
        select * from mybatis.user where name like "%"#{value}"%";
    </select>

在这里插入图片描述测试:

    @Test
    public void getUserListByLike(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> user = (List<User>) mapper.getUserListByLike("李");
        for (User user1 : user) {
            System.out.println(user1);
        }
        sqlSession.commit();
        sqlSession.close();
    }
MyBatis 分页查询、模糊查询以及映射文件都是 MyBatis 框架中用于构建 SQL 查询的强大特性。下面分别对这三个概念进行简要解释: ### 1. **MyBatis 分页查询** 在传统的 SQL 中,进行分页操作需要通过 LIMIT 和 OFFSET 关键字来指定每一页的数据范围。但在 MyBatis 中,为了简化分页操作并提高性能,引入了自定义分页插件,如 MyBatis Plus 的 `PageHelper` 插件。用户只需要在配置文件中开启此功能,并提供分页的相关参数,即可生成对应的 SQL 语句进行分页查询。 #### 使用示例: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; PageHelper.startPage(pageNum, pageSize); List<MyModel> models = yourMapper.selectAllModels(); PageInfo<MyModel> pageInfo = new PageInfo<>(models); System.out.println("总页数:" + pageInfo.getPages()); ``` ### 2. **MyBatis 模糊查询** 模糊查询允许在数据库查询中使用 LIKE 运算符,其中通配符 `%` 可表示任意字符串。在 MyBatis 中,通过在 SQL 语句中直接添加 WHERE 子句并包含合适的模糊匹配条件来进行。 #### 示例 SQL 语句: ```sql SELECT * FROM table_name WHERE column_name LIKE '%search_keyword%'; ``` 在映射文件中定义对应的方法和参数: ```xml <select id="selectWithFuzzyMatch" resultType="your_model"> SELECT * FROM table_name WHERE column_name LIKE CONCAT('%', #{searchKeyword}, '%') </select> ``` ### 3. **MyBatis 映射文件** MyBatis 的核心组件之一就是 XML 或者注解形式的映射文件 (`mapper.xml`),它负责定义如何将数据库表转换成 Java 对象。在映射文件中,可以定义 SQL 查询、插入、更新和删除操作等。 #### 示例映射文件结构: ```xml <mapper namespace="com.example.your_package.YourDao"> <select id="selectAllModels" resultType="com.example.your_package.Model"> SELECT * FROM model_table </select> <!-- 其他操作如:insert, update, delete --> </mapper> ``` 通过以上三个方面的理解,你可以更深入地掌握 MyBatis 平台的基本操作,包括数据检索、复杂查询和业务逻辑处理等方面。此外,MyBatis 还支持动态SQL表达式、缓存机制等高级特性,进一步提升应用的性能和灵活性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值