Mybatis框架介绍

本文介绍了Mybatis的基础概念,从官网搭建、IDEA数据库配置到Mapper代理开发,涵盖了核心配置、增删改查操作和动态查询技巧。还重点讲解了如何处理数据库映射和动态条件查询,以及事务管理在操作中的应用。
摘要由CSDN通过智能技术生成

一、Mybatis简介

        Mybatis是持久层框架。

        用来解决JDBC(Java database connection)的硬编码(数据库连接+sql语句书写 -》配置文件)和操作繁琐(sql语句赋值 -》自动化)的问题。Mybatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。

二、Mybatis快速入门

        1. Mybatis中文官网:https://mybatis.org/mybatis-3/zh/index.html

        2. 用maven构建Mybatis项目介绍

        

        ①. pom.xml : 依赖管理

        ②.mybatis-config.xml:mybatis的核心配置文件,包括数据库连接以及sql文件的映射。要注意,连接数据库的驱动jar包和mysql数据库版本对应,8.0之后版本:com.mysql.cj.jdbc.Driver

        ③.PcMapper.xml:书写sql语句,namespace是区别不同xml文件,resultType是返回值类型,即定义的PC类的路径。

        ④.Pc.java:把数据库中每条数据封装成一个类。

三、IDEA中数据库连接的可视化

         面板右侧databases, 点“+”,datasource 选择 mysql。之后操作注意两点:

                第一:在连接的url上添加 ?serverTimezone=UTC (解决时域问题)

                

                第二:选择框架

                

                第三:连接成功

                

四、Mapper代理开发

流程

1. 定义与SQL映射文件同名的Mapper接口,并且放在同一目录下。(在resource目录下定义相同的文件名:new->directory-> com/sql/mapper

2. 设置SQL映射文件的namespace属性为Mapper接口的全限定名(com.sql.mapper.PcMapper)。

3. 在Mapper接口中定义方法,方法名就是sql映射文件中sql语句的id,并保持参数类型和返回值类型一致。

4. 编码

        通过sqlsession的getMapper方法获取Mapper接口的代理对象

        调用对应方法完成sql执行

注意:在第一步修改了SQL映射文件的路径,同时要修改mybatis-conf.xml中映射文件的路径。

五、Mybatis的核心配置文件

        1. environment 配置数据库的连接信息,可以配制多个数据库。通过default属性切换数据库。

        2. typeAliases 别名,简化sql映射文件返回值类型的书写。自动扫描包下类且不区分大小写。

        注意:注意配制的顺序。

六、Mybatis增删改查操作

        1. 要求

                查询【查询所有数据、查看详情、条件查询】

                添加

                修改【修改部分字段、修改全部字段】

                删除【删除一个、删除全部】

        2. 安装Mybatisx插件

                下载之后,如果没有小鸟图标。检查是否下载成功,点击apply ,OK。

        3. 查询操作

          操作(安装mybatisx插件之后方便多了):编写接口方法、编写SQL语句、执行方法。

        情况一:数据库中表的字段名和定义的实体类名有差异(我的pc表数据库中属性model, 实体类中是Model)。

          解决办法:使用resultMap映射,将有区别的字段名称进行一一映射。在SQL映射文件中。

          两步骤:①定义resultMap标签。②<select>标签的type属性要被resultMap替换。

        标签上:id是唯一标识,type是映射的类型,支持别名。

        id:完成主键映射;column:表的列名;property:实体类的属性名。

        result:完成一般字段的映射。

    <resultMap id="pcresultMap" type="pc">
        <result column="model" property="Model"/>
    </resultMap>

4. 多条件查询

        散装参数:传参的地方指定参数名称。

 List<Pc> selectByConditions(@Param("cd") String cd, @Param("price") int price);

        包装成类。

List<Pc> selectByConditions(Pc pc);

        Map集合。      

 List<Pc> selectByConditions(Map map);

        测试程序

        //获取数据
        String cd = "8X";
        int price = 1999;
        //数据处理-方式一
        Pc pc = new Pc();
        pc.setCd(cd);
        pc.setPrice(price);
        //数据处理-方式二
        Map map = new HashMap();
        map.put("cd", cd);
        map.put("price", price);

         //1. 获取sqlsessionfactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2. 获取session对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3.执行sql语句
        PcMapper pcMapper = sqlSession.getMapper(PcMapper.class);
        
        List<Pc> pcs = pcMapper.selectByConditions(cd,price);
        /*List<Pc> pcs = pcMapper.selectByConditions(pc);*/
        /*List<Pc> pcs = pcMapper.selectByConditions(map);*/
        System.out.println(pcs);

        //4.释放资源
        sqlSession.close();

5. 动态条件查询

sql语句随着用户的输入或者外部条件的变化而变化。

if 和 where标签。

        if标签进行判断参数是否有值;

        where标签进行sql语句规范。

<select id="selectByConditions" resultType="com.sql.pojo.Pc">
        select *
        from pc
        <where>
            <if test="cd != null and cd != '' ">
                and cd = #{cd}
            </if>
            <if test="price != null">
                and price = #{price}
            </if>
        </where>
    </select>

6. 单条件的动态查询。根据用户的不同选择,提示不同的查询面板。

choose 进行条件选择。== switch

when 某个条件 == case

<select id="selectByCondition" resultType="com.sql.pojo.Pc">
        select *
        from pc
        <where>
            <choose>
                <when test="cd != null and cd != '' ">
                    and cd = #{cd}
                </when>
                <when test="price != null">
                    and price = #{price}
                </when>
            </choose>
        </where>
    </select>

7. 增删改操作

7.1 添加

注意:Mybatis事务;对于增删改操作sql语句执行后提交事务或者opensession(true)自动提交事务

① opensession(): 默认开启事务,进行增删改操作后需要使用sqlSession.commit()提交事务。

② 或者 openSession(true):设置为自动提交事务。

7.2 修改 动态修改

如果只需要修改几列,需要添加判断条件否则其他没有修改的列都变成NULL了,使用<if>标签。 使用<set>标签进行sql语句规范。

7.3 批量删除

主键存入数组,sql语句遍历主键进行删除操作。

数组名称默认是array。collection = array。

通过@param注解,修改名称 void deleteByModel(@Param("models") String[] models);

<delete id="deleteByModel">
        delete from pc
        where model in (
            <foreach collection="models" item="model" separator=",">
                #{model}
            </foreach>
            )
    </delete>

 

        

        

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值