700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Mybatis持久层框架MBGExample类详解

Mybatis持久层框架MBGExample类详解

时间:2020-03-15 01:23:11

相关推荐

Mybatis持久层框架MBGExample类详解

Mybatis

1. 概念

1.1 什么是Mybatis

是一个持久层框架;

所谓持久层,也就是数据访问层。又称为DAL层,有时候也称为是持久层,其功能主要是负责数据库的访问。

我的理解就是Mybaits就是优化Dao层的一个框架。

1.2 优点

2. Mybatis小程序

2.1编写步骤

0.导入jar包1.编写mybatis核心配置文件1.1配置jdbc1.2配置mapper????<mappers><mapper resource="com/gao/dao/userMapper.xml"/></mappers>2.编写mybatis工具类这个应该只是起到辅助功能,把获取SqlSession连接的操作封装起来3.编写Maper接口public interface UserMapper {List<User> selectUser();}4.编写mapper配置文件??<mapper namespace="com.gao.dao.UserMapper"><select id="selectUser" resultType="com.gao.User">select * from user</select></mapper>

2.2操作解析

1.namespace

<mapper namespace="com.gao.dao.UserMapper">

namespace中的路径为对应的接口完整路径;

2.select

<select id="selectUser" resultType="com.gao.User">select * from user</select><select id="selectUserByPage" parameterType="map" resultType="com.gao.User">select * from user limit #{startIndex} ,#{pageSize}</select>???parameterType???是干啥的

SQL语句返回值类型:

/codejas/article/details/79520246

传入SQL语句的参数类型 。

==万能的map=

使用步骤:

1.<select id="selectByNameAndAge" parameterType="map" resultType="com.gao.User">2.User selectByNameAndAge(Map<String,Object> map);3.UserMapper mapper = session.getMapper(UserMapper.class);Map<String,Object> map=new HashMap<String, Object>();map.put("age",12);

命名空间中唯一的标识符

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

2.3配置文件解析

<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="com/gao/dao/userMapper.xml"/></mappers></configuration>

3.Mybatis生命周期及作用域

3.1生命周期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FeQrVHaZ-1628558506968)(C:\Users\CoolGuy\AppData\Roaming\Typora\typora-user-images\image-0723144618160.png)]

3.2作用域

4.ResultMap、分页、日志

4.1ResultMap

难 搞 嗷

4.2分页

实现方法

1.数据库分页;2.Java代码分页;3.插件实现

MyBatis 分页插件 PageHelper

4.3注解开发

我的理解

就是把UserMaper中的配置信息(Sql语句)放到注解上实现。

5. 1vN,Nv1查询,动态Sql

小记:

您瞪着大眼珠子瞅了1小时,没看懂的还是没看懂;用10分钟把看懂的部分搭建后,自然就懂了~~。

5.1 1vN

关键代码

<association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>

我的分析

把数据库中查询到的对象,用映射的方式整合起来,即association。

按结果嵌套

<resultMap id="StudentTeacher2" type="Student"><id property="id" column="sid"/><result property="name" column="sname"/><!--关联对象property 关联对象在Student实体类中的属性--><association property="teacher" javaType="Teacher"><result property="name" column="tname"/></association></resultMap>

6. 缓存

7.MBG

MyBatis Generator (MBG) is a code generator for MyBatis MyBatis and iBATIS. It will generate code for all versions of MyBatis, and versions of iBATIS after version 2.2.0. It will introspect a database table (or many tables) and will generate artifacts that can be used to access the table(s). This lessens the initial nuisance of setting up objects and configuration files to interact with database tables. MBG seeks to make a major impact on the large percentage of database operations that are simple CRUD (Create, Retrieve, Update, Delete). You will still need to hand code SQL and objects for join queries, or stored procedures.

​ MyBatis Generator的作用就是根据数据库中的表结构,帮我们自动生成和表结构相同的实体类mapper接口包含基本增删改查语句的XML文件

7.1使用步骤

导入依赖jar包,并编写mbg.xml配置文件

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN""/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="DB2Tables" targetRuntime="MyBatis3"><!-- 去掉生成的结构中多余的注释 --><commentGenerator><property name="suppressAllComments" value="true" /></commentGenerator><!-- 配置数据库连接 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/ssm_crud?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=GMT"userId="root"password="root"></jdbcConnection><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- 指定javaBean生成的位置 --><javaModelGenerator targetPackage="com.gao.bean"targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /><property name="trimStrings" value="true" /></javaModelGenerator><!--指定mapper.xml文件生成的位置 --><sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!-- 指定mapper接口生成的位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="com.gao.dao" targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /></javaClientGenerator><!-- 指定每个表对应的java类型 --><table tableName="tbl_stu" domainObjectName="Student"></table><table tableName="tbl_dept" domainObjectName="Department"></table></context></generatorConfiguration>==============生成的对象有:1.实体类、实体名+Example类2.实体类+Mapper接口3.实体类+Mapper.xml文件

MVC整合Mybatis框架

<!-- 和MyBatis整合 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:mybatis-config.xml"></property><property name="dataSource" ref="pooledDataSource"></property><property name="mapperLocations" value="classpath:mapper/*.xml"></property></bean>

7.2在SSM中使用MBG的流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-onRjuPhM-1628558506971)(file:///G:\QQDownload\2152843846\Image\Group2\XR\3Q\XR3QNCU7853}P@6@%1`PP%S.jpg)]

7.3***Example类解析

分析

​ 我理解的Example类的作用是添加条件,相当where后面的部分。

protected String orderByClause;//distinct字段用于指定DISTINCT查询。protected boolean distinct;//orderByClause字段用于指定ORDER BY条件,这个条件没有构造方法,直接通过传递字符串值指定。protected List<Criteria> oredCriteria;//oredCriteria字段用于自定义查询条件。

生成的Example类会有以上3个成员变量。

方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIePvOTe-1628558506973)(C:\Users\CoolGuy\AppData\Roaming\Typora\typora-user-images\image-0810091516530.png)]

举栗

在StuService中:

studentExample.setOrderByClause("stu_id asc");return studentMapper.selectByExampleWithDept(studentExample);

在StuExample中:

public void setOrderByClause(String orderByClause) {this.orderByClause = orderByClause;}======该方法将传入的参数赋值给orderByClause,让StuMapper.xml文件可以调用。

在StuMapper.xml中:

<if test="orderByClause != null">order by ${orderByClause}</if></select>

中:

public void setOrderByClause(String orderByClause) {this.orderByClause = orderByClause;}======该方法将传入的参数赋值给orderByClause,让StuMapper.xml文件可以调用。

在StuMapper.xml中:

<if test="orderByClause != null">order by ${orderByClause}</if></select>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。