mybatis 学习总结笔记Day2
在门外听到或看到一门技术,找资料入门,一看,嗯,不错,进门之后,发现,尼玛————,是片海,你是关门而出,还是学习精卫填海。
填海吧,也许只是个小水坑,稍加用点力,就填的7788了。
上一篇随笔中说了mybatis入门,介绍了基本方式的增删改查CRUD
MyBatis快速入门:
https://www.cnblogs.com/qianjinyan/p/10346569.html
CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。CRUD主要被用在描述软件系统中数据库或者持久层的基本操作功能。
mybatis除了用基本方式的CRUD,还可以用mapper动态代理方式的CRUD,这种方式也通常称作Mybatis接口开发。
今天要总结的内容:
1. 用Mapper接口动态代理方式的CRUD
2. 别名的使用
3. 将数据库连接等信息放到配置文件中再动态引入
4. 类型转化器【比如DB中存int,程序对象中是false和true】
1.Mybatis接口开发的原则是:约定优于配置,必须遵循以下约定:
1) 方法名和mapper.xml文件标签中的ID必须一致
2) 方法的输入参数和mapper.xml文件标签中的parameterType类型一致
3) 方法的输出参数和mapper.xml文件标签中的resultType类型一致
3) mapper.xml文件标签中的namespace的值就是接口的全类名
根据配置的原则,接口的内容很容易编写了,如下
package com.test.mybatis.mapper; import com.test.mybatis.entity.User; import java.util.List; public interface UserMapper { User selectById(int id); List<User> selectAll(); int addUser(User user); int updateUser(User user); int deleteUserById(int id);
}
再看一下UserMapper.xml文件,是不是namespace的值和接口的全路径名称一致,是不是mapper中的id和接口的方法名一致,返回类型是不是也不一致。
新增/更新/删除接口,在mapper文件中是没有返回类型的,接口中返回int类型,也可以返回无类型void。 我这边返回int,目的是看新增/更新/删除操作,影响的数据条数。
测试一下接口的调用,这个时候就不用statement了,需要用java中的反射,session.getMapper(xxMapper.class),返回的还是这个接口,然后调用接口里的方法。
2. 别名的使用
比如我觉得userMapper.xml文件中的namespace="com.test.mybatis.entity.User"太长,要写的太多,想用别名User替代com.test.mybatis.entity.User
config.xml文件中,在<configuration>元素下导入
<typeAliases>
<typeAlias type="com.test.mybatis.mapper.UserMapper" alias="UserMapper" />
<typeAlias type="com.test.mybatis.entity.User" alias="User" />
</typeAliases>
3. 将数据库连接等信息放到配置文件中再动态引入
配置信息单独放入某文件中,然后在config.xml文件中,在<configuration>元素下导入
导入语句 <properties resource="db.properties" />
db.properties文件
driver= com.mysql.cj.jdbc.Driver
url= jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
username= root
password=root
config.xml中如何取对应的value值,用${key}来取值,之后的config.xml文件如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties" /> <typeAliases>
<typeAlias type="com.test.mybatis.mapper.UserMapper" alias="UserMapper" />
<typeAlias type="com.test.mybatis.entity.User" alias="User" />
</typeAliases> <environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="UserMapper.xml"/>
</mappers> </configuration>
4. 类型转化器【比如DB中存int,程序对象中是false和true】
mybatis 学习总结笔记Day2的更多相关文章
- 【MyBatis学习笔记】
[MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
- MyBatis:学习笔记(3)——关联查询
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...
- mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...
- mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现
项目结构 基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...
- Mybatis学习笔记二
本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...
- Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...
随机推荐
- Cookie,Session,正则表达式
一.Cookie和Session基础知识 Cookie:客户端本地存储的键值对 Http访问是不记录状态的,所以要借助session和cookie来保存访问状态 当你在浏览网站的时候,WEB 服务器 ...
- Eclipse Luna在线安装Maven时报错:Java heap space
问题描述: 在线安装Maven插件时发生了:Java heap space 问题截图:
- Inception 模型
https://blog.csdn.net/xxiaozr/article/details/71481356 inception v1: 去除了最后的全连接层,使用全局平均池化层来代替,因为全连接层的 ...
- K8S学习笔记之Kubernetes核心概念
0x00 Kubernetes简介 Kubernetes(K8S)是Google开源的容器集群管理系统,其设计源于Google在容器编排方面积累的丰富经验,并结合社区创新的最佳实践. K8S在Doc ...
- word2010自定义的多级列表编号变成黑块的解决办法
首先,看图说话 是的,当我保存Word再打开之后,我辛辛苦苦(没错,小白有罪,调来调去真辛苦)搞得多级列表编号变成了黑块,默默无言,只有泪千行,还好有万能的Google. 解决办法: 将光标移到黑块的 ...
- uml类图和er图中主外键的表示区别
在er图也就是数据库中,无论是mysql/oracle都是从表引用主表的pk作为外键. 而在uml类图表示法中,他们的顺序则刚好相反,从主对象导向到子对象,如下: 主体是资金借款方,征信信息和资金借款 ...
- 01:saltstack 基本使用
1.1 准备实验环境: 安装系统 1)硬件配置如下 2) 先把光标放到”install CentOS 7”,按 Tab键编辑内核参数,添加 (net.ifnames=0 biosdevname=0) ...
- 搭建ldap服务器及web管理服务--phpldapadmin
系统版本:centos6 安装配置openldap: yum install openldap openldap-servers openldap-clients openldap-devel com ...
- centos7 update network time
yum install -y ntp crontab -e */5 * * * * /usr/bin/ntpdate ntp.api.bz ### ntp.api.bz 是一组NTP集群服务器,之 ...
- VC++ 使用ShellExecute函数调用邮箱客户端发送邮件(可以带附件)
之前写过一篇博文,通过MAPI实现调用邮箱客户端发送邮件带附件,当时对ShellExecute研究不深,以为ShellExecute不能带附件,因为项目需求原因(MAPI只能调用Foxmail和O ...