mybatis的基本工作流程
1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径。

2.有了这些信息就能创建SqlSessionFactory,SqlSessionFactory的生命周期是程序级,程序运行的时候建立起来,程序结束的时候消亡

3.SqlSessionFactory建立SqlSession,目的执行sql语句,SqlSession是过程级,一个方法中建立,方法结束应该关闭

4.当用户使用mapper.xml文件中配置的的方法时,mybatis首先会解析sql动态标签为对应数据库sql语句的形式,并将其封装进MapperStatement对象,然后通过executor将sql注入数据库执行,并返回结果。

5.将返回的结果通过映射,包装成java对象。

1、jdbc.properties,下面会调用

jdbc.username=root
jdbc.password=root
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库

2、mapper配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.....IUserDao">

1 在mybatis中,映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。
当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句

public interface IUserDao extends IBaseDao<User>{public void modifyPassword(User user);
}

对应xml有

    <!--修改密码--><update id="modifyPassword" parameterType="com.qf.entity.User">UPDATE t_user set password=#{password} where id=#{id};</update>

2 resultMap的使用
在mybatis中有一个resultMap标签,它是为了映射select查询出来结果的集合,其主要作用是将实体类中的字段与数据库表中的字段进行关联映射。
2.1数据库与实体类之间名称相同
前提要实体类和数据库字段名称一毛一样,实际一般不这样,在mapper中的查询方式:

2.2 数据库与实体类之间不相同
第一种:开启驼峰规则
mybtis中开启

<setting name="mapUnderscoreToCamelCase" value="true" />

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="menu.mysql"><select id="selectMenu" resultType="org.me.menu.Menu">select MENU_ID, MENU_NAME, PARENT_ID, URL, TITLE, LEAF, ORDER_SEQfrom mysql.MENUorder by ORDER_SEQ</select>
</mapper>

第二种:使用resultMap标签来映射
然后在mapper.xml中书写resultMap标签,使得数据库字段和实体类
名称映射。(将实体类字段与数据库字段在标签中进行一一映射)

    <resultMap id="BaseResultMap" type="com...entity.User" ><id column="id" property="id" jdbcType="INTEGER"/><result column="username" property="username" jdbcType="VARCHAR" /><result column="password" property="password" jdbcType="VARCHAR" /><result column="age" property="age" jdbcType="INTEGER" /><result column="sex" property="sex" jdbcType="INTEGER" /><result column="birthday" property="birthday" jdbcType="DATE" /><result column="create_time" property="createTime" jdbcType="TIMESTAMP" /><result column="create_user" property="createUser" jdbcType="INTEGER" /><result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /><result column="update_user" property="updateUser" jdbcType="INTEGER" /><result column="email" property="email" jdbcType="VARCHAR" /><result column="flag" property="flag" jdbcType="INTEGER" /><result column="png" property="png" jdbcType="LONGVARCHAR" /></resultMap>

3、配置数据库
什么是数据源
JDBC2.0 提供了javax.sql.DataSource接口,它负责建立与数据库的连接,当在应用程序中访问数据库时
不必编写连接数据库的代码,直接引用DataSource获取数据库的连接对象即可。用于获取操作数据Connection对象。

    <!-- 1.加载配置文件--><context:property-placeholder location="classpath:jdbc.properties"/><!-- 2.dataSource --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="driverClassName" value="${jdbc.driverClass}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>

4、spring-mybatis.xml核心文件的配置

更多内容来源:http://mp.weixin.qq.com/mp/homepage?__biz=MzA5OTQ1ODE1NQ==&hid=6&sn=843337a7d9931839214ec8f861ac2164&scene=18#wechat_redirect

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:lang="http://www.springframework.org/schema/lang"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd"><!-- 包含配置文件进来--><import resource="classpath:spring-datasource.xml"/><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="typeAliasesPackage" value="com....entity"/><property name="mapperLocations" value="classpath:mapper/*.xml"/><property name="plugins"><array><bean class="com.github.pagehelper.PageInterceptor"></bean><!--这里用了pagehelper插件在mybtis的配置,就是分页的插件--></array></property></bean><bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><tx:annotation-driven transaction-manager="tx"/><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.qf.dao"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean>
</beans>

mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※相关推荐

  1. mysql mybatis 返回值类型_使用MyBatis时接收值和返回值选择Map类型或者实体类型

    MyBatis作为现近JavaEE企业级项目开发中常用的持久层框架之一,以其简洁高效的ORM映射和高度的SQL的自由性被广大开发人员认可.Mybatis在接收系统传来的参数和返回的参数时主要可以有Ma ...

  2. MyBatis查询两个字段,返回Map,一个字段作为key,一个字段作为value的实现

    1. 问题描述 在使用MyBatis,我们经常会遇到这种情况:SELECT两个字段,需要返回一个Map,其中第一个字段作为key,第二个字段作为value.MyBatis的MapKey虽然很实用,但并 ...

  3. Java返回int型的空值_使用MyBatis查询int类型字段,返回NULL值时报异常的解决方法...

    当配置mybatis返回int类型时 select id="getUserIdByName" parameterType="string" resultType ...

  4. mybatis返回map键值对_mybatis返回map结果集怎么配置

    匿名用户 1级 2018-06-10 回答 一.概述 MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返 ...

  5. 深入了解MyBatis返回值

    深入了解MyBatis返回值 想了解返回值,我们需要了解resultType,resultMap以及接口方法中定义的返回值. 我们先看resultType和resultMap resultType和r ...

  6. mybatis返回map键值对_mybatis返回map key怎么指定

    展开全部 一.概述 MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是 ...

  7. Mybatis优雅存取json字段的解决方案 - TypeHandler (一)

    起因 在业务开发过程中,会经常碰到一些不需要检索,仅仅只是查询后使用的字段,例如配置信息,管理后台操作日志明细等,我们会将这些信息以json的方式存储在RDBMS表里 假设某表foo的结构如下,字段b ...

  8. Mybatis返回Map的一种实现

    Mybatis返回Map的一种实现 前言 在使用Mybatis进行系统开发的时候,有时候我们会有这么一种需求:我们希望通过Mybatis查询某一个表返回的结果是一个Map,而这个Map的Key是表的一 ...

  9. 12、mybatis返回map单条及多条记录

    文章目录 1.mybatis返回map单条记录 1).EmployeeMapper接口 2).EmployeeMapper.xml 3).Test 4).测试结果 2.mybatis返回map多条记录 ...

最新文章

  1. 每日一篇——Fed Unveils Major Expansion of Market Intervention
  2. python学习手册条件-Python学习手册(第4版)pdf
  3. mysql udf提权_mysql——udf提权
  4. 从0搭建一个Springboot+vue前后端分离项目(二)使用idea进行页面搭建+页面搭建
  5. 【Centos 7】【Docker】 安装 redis
  6. angular 的配置文件的应用
  7. 命名时取代基优先顺序_【选修五】高中化学重难点知识:有机物的命名方法
  8. 每日一笑 | 老板,黑凤梨真的能吃吗?
  9. hash签名 java_java开发区块链只需150行代码
  10. php curl CURLOPT_TIMEOUT_MS 小于1秒 解决方案
  11. java最终类不能派生子类_最终类不能派生子类,最终方法不能被重写 (2.0分)_学小易找答案...
  12. python屏幕录像专家_可以推荐一款电脑录屏软件吗?
  13. 电子手轮控制步进电机程序手轮控制步进电机的頻率,脉冲数,内容包括欧姆龙plc程序,mcgs程序
  14. linux wifi信道,2.4G wifi 的频道/信道 20M 40M的概念,区别
  15. ce变速注入dll失败_调用CE变速DLL注入的软件含HOOK模块
  16. Dapr+Net6 服务调用09:集群指标收集-普罗米修斯
  17. C++ map 遍历
  18. 基于构件技术的流程银行,再造核心竞争力
  19. C语言 校园歌手比赛系统源码
  20. html页面加载有时没有网样式,网站css样式不加载是什么原因?

热门文章

  1. 两款扁平步进电机及其驱动器VSMD102
  2. 举行可衡量自动行驶车未来发展的“智能模型车竞赛大会” 2018
  3. 利用 RDA5807的RSSI测量RF强度
  4. php 图片处理类,分享php多功能图片处理类
  5. php某列为键数组为值,PHP 将二维数组中某列值作为数组的键名 -- 超实用
  6. mysql 1594_【MySQL】复制1594错误(从库relaylog损坏)
  7. 子shell中使用相关的环境变量
  8. 半导体基础知识(1):材料和器件
  9. mpVue配置sass全局变量
  10. vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题