Mybatis基础

Mybatis:

Mybatis是一款半自动的ORM框架,对jdbc进行了轻量级的封装,在执行数据库操作时,需要自己编写sql语句,Mybatis主要

负责对于sql语句中参数的处理以及结果集的封装。

Mybatis架包及中文文档下载地址:Mybatis架包及中文文档,密码:cmek。

Mybatis的使用步骤:

1、导入Mybatis的jar包和jdbc驱动包

2、在src目录下新建一个xml文件,该文件是Mybatis的核心配置文件,文件名自定义

3、在核心配置文件中配置连接数据库的信息(驱动、地址、用户名、密码)

4、使用核心配置文件构建SqlSessionFactory对象,然后通过SqlSessionFactory对象构建SQLSession对象

5、想要对那张表执行数据库操作,在项目中创建该表的实体类对象(类名不需要和表名一致,属性名最好和列名保持一致)

6.新建数据层查询接口,定义数据库操作的抽象方法
7.针对于数据库查询接口,需要定义一个xml文件来完成数据层接口中方法和sql语句的映射,在数据层的接口包中定义该

文件
数据库接口对应的xml文件详细讲解:
1.根标签是<mapper>该标签中有一个属性namespace,该属性用来描述和当前xml文件相对应的是那一个查询接口,namespace的值应该是对应的数据层接口的全限定名(包名+类名)
2.针对于数据层接口中的抽象方法,在mapper标签中需要使用不同的标签来绑定sql语句
查询方法使用select标签
新增方法使用insert标签 
更新方法使用update标签 
删除方法使用delete标签
使用标签的id属性绑定查询接口中的抽象方法 id值和方法名一致
根据数据库操作的不同在这4个数据库操作标签中有一些可选的属性
SQL语句书写在标签中
resultType:主要用在查询标签中,描述该标签中对应的sql语句执行之后返回的数据类型,resultType可以写任意的java类型
parameterType:定义执行数据操作时传入的数据类型,可以是任意的java类型
注意当数据层的参数只有一个字符串参数时,在xml文件中使用该参数需要使用_parameter这个参数名称来取值
3.如果实体类的属性名称和数据库的字段名称不一致,我们需要手动的配置对象关系映射
<resultMap type="com.entity.Emp" id="empMap">
    <result column="realname" property="name" jdbcType="VARCHAR"/>
</resultMap>
使用resultMap标签在标签中设置type属性该属性是映射的实体类类型,id属性表示映射关系的名称,在查询时可以使用这个名称来引用该映射关系
在resultMap标签内部使用result标签描述实体类属性和数据库字段的映射     
   
 8、将数据层查询接口对应的xml文件地址在核心配置文件中使用<mappers>标签告诉给mybatis
 9、使用SqlSession对象获取数据层查询接口的实现类
 10、使用该实现类执行数据层操作

 

 

事务管理:
    事务是指作为单个逻辑工作单元执行的一系列操作,这一系列操作要么同时成功,要么同时失败
    事务的四大特性:原子性 一致性 隔离性 持久性
    在java程序中一个业务逻辑通常需要执行多个数据层方法
为了保证一个业务中的操作同时成功或者同时失败,我们需要在业务层引入事务管理    
    在使用jdbc或者一些数据层框架时,需要合理的提交和回滚事务,通常来讲涉及到数据的增删改操作都需要加入事务的管理
    
MyBatis Generator插件:
插件的安装:将插件中的features和plugins拷贝到myeclipse的安装目录的dropins文件夹下
打开myeclipse将generatorConfig.xml文件拷贝到任意项目中,右键点击该文件如果出现一个新的选项说明安装成功
使用插件生成实体类,查询接口,查询文件的步骤
1.修改generatorConfig.xml文件的内容
提供jdbc驱动包
<classPathEntry location="当前电脑中jdbc驱动包的地址" />
提供数据库连接信息
<jdbcConnection driverClass="驱动类" connectionURL="数据库地址" userId="用户" password="密码"></jdbcConnection>
生成实体类的标签配置
<javaModelGenerator targetPackage="项目下的包" targetProject="目标项目"></javaModelGenerator>
生成数据层接口的标签配置
<javaClientGenerator type="XMLMAPPER" targetPackage="项目下的包" targetProject="目标项目"></javaClientGenerator>
生成数据层查询文件的标签配置
<sqlMapGenerator targetPackage="项目下的包" targetProject="目标项目"></sqlMapGenerator>
哪些表需要生成实体类一张表对应一个标签
<table tableName="表名" domainObjectName="实体类名"></table>
插件生成数据层接口方法介绍:
int countByExample(XxxExample example);
根据查询条件查询数据总行数
int deleteByPrimaryKey(Integer xx);
根据主键的值删除数据
int insert(Xxx xx);
新增方法传入实体类对象
int insertSelective(Xxx xx);
非空新增方法传入实体类对象(实体类对象中属性值等于null的数据不会保存到数据库中)
List<Xxx> selectByExample(XxxExample example);
根据条件查询数据 返回实体类的集合
Xxx selectByPrimaryKey(Integer xx);
根据主键查询数据 返回实体类对象
int updateByExampleSelective(@Param("record") Xxx xx, @Param("example") XxxExample example);
根据条件非空更新数据(实体类对象中为null的数据不会更新)
int updateByExample(@Param("record") Xxx xx, @Param("example") XxxExample example);
根据条件更新数据(实体类中所有的属性值会全部更新到数据库包括空数据)
int updateByPrimaryKeySelective(Xxx xxx);
根据主键非空更新
int updateByPrimaryKey(Xxx xxx);
根据主键更新
条件对象常用的条件
//单个条件
            //条件方法的名称规则
            //and+属性名称+条件(条件对应的值)
            //等值条件
            //example.or().andDeptnameEqualTo("后勤部");
            //不等于的条件
            //andDeptnameNotEqualTo("");
            //大于
            //andDeptnoGreaterThan(value);
            //大于等于
            //andDeptnoGreaterThanOrEqualTo(value);
            //小于
            //example.or().andDeptnoLessThan(value);
            //小于等于
            //example.or().andDeptnoLessThanOrEqualTo(value)
            //模糊查询 like
            //example.or().andDeptnameLike("%值%");
            
            //如果要追加2个或者2个以上的and条件
            //example.or().条件一.条件二
            //例如 部门编号等于1 并且 部门名称等于人事部 的条件
            //example.or().andDeptnoEqualTo(1).andDeptnameEqualTo("技术部");
            //如果要追加2个或者2个以上的or条件
            //example.or().条件一;
            //example.or().条件二;
            //例如 部门编号等于1 或者 部门名称等于人事部 的条件
            //example.or().andDeptnoEqualTo(4);
            //example.or().andDeptnameEqualTo("技术部");
            //执行数据层方法传入条件对象
            //mapper.deleteByExample(example);
            //sqlSession.commit();
            //根据条件查询 手动添加分页功能
            DeptExample example=new DeptExample();
            //条件对象不执行任何方法,表示没有条件
            //条件对象中添加2个Integer类型的属性 开始查询位置和查询条数
            //在查询接口对应的xml文件中根据条件查询的标签中添加一组判断
            //给条件对象的2个分页属性赋值
2.右键xml文件点击新的选项
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值