MyBatis

【Note_01】通用 mapper

拜拜、爱过 提交于 2020-02-27 22:53:04
一、通用 mapper 简介 最初我们手写 Mybatis 的 mapper.xml 文件,然后使用 Mybatis-generator 逆向工程生成 mapper.xml 文件,再发展到使用通用 mapper,支持自动生成 EntityMapper、mapper.xml 文件。 二、入门 Demo 1.引入依赖 <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>最新版本</version> </dependency> 2.配置 Mybatis.xml 文件 <!-- 与 Mybatis 配置的区别仅仅是将 class="org.xxx" 改为了 class="tk.xxx" --> <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="扫描包名"/> <!-- 其他配置 --> </bean> 3.实体类配置 public class Entity implements Serializable { @Id private Long id; private String name; //setter 和 getter

2020金三银四,一篇文章教你如何征服面试官,拿到offer

你说的曾经没有我的故事 提交于 2020-02-27 21:53:42
2020年,跳槽面试就靠它们了,现在每天刷题,看源码文档,最近看的这些题目还是有些难度,有一部分我都要好好想一想才能回答出来,或者回答不出来,总的来说知识宽度够了深度还跟不上。所以要重点突破下底层的东西。这篇文章我总结了很久,希望对正在准备面试的同仁们有点帮助。没错我就是传说中的面霸!! 一. 面试准备 首先,是笔试题,这点是初级程序员绕不过去的坎。 笔试题一般的公司都会出的,除非你是大牛,可以选择不做。所以,还是老老实实的准备吧。 这里列举下一些比较常见出现的问题 JAVA 5个常用的java-api包。 String类中常用的5个方法。 API接口开发的注意事项。 TCP/IP、HTTP协议。 集合相关的问题(重点) HashMap、TreeMap、Hashtable、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的实现和区别之类的。 上述集合中的那些是线程安全的,那些不是。 在那些场景使用这些集合。 List、Map、Set三个接口,存取元素时,各有什么特点。 线程相关问题(重点) 创建线程的几种方式。 线程同步的方法。 wait和sleep区别。 Runnable接口和Callable接口的区别。 如何实现线程安全。 框架相关知识(这块反而不多) Mybatis#和$的区别. Hibernate和Mybatis的区别

Spring 集成 MyBatis

丶灬走出姿态 提交于 2020-02-27 15:19:15
1、MyBatis代码解析 1.1 MyBatis SqlSession 创建过程 SqlSessionFactoryBean是什么? SqlSessionFactoryBean 是用来创建MyBatis的SqlSessionFactory对象的。 SqlSessionFactory 是用于创建 SqlSession 对象的,SqlSession对象是MyBatis基本的接口, 通过SqlSession对象可以执行SQL和控制事务 。 进入 SqlSessionFactoryBean 类的代码发现其中含有 afterPropertiesSet() 方法。根据前面文章有关Bean生命周期的介绍,此方法会在IoC容器启动过程中,在Bean的构造器执行完后执行。 afterPropertiesSet() 这个方法是生成 SqlSessionFactory的入口。 private SqlSessionFactory sqlSessionFactory; @Override public void afterPropertiesSet() throws Exception { // 省略其他代码 this.sqlSessionFactory = buildSqlSessionFactory(); } SqlSessionFactory(接口) --->

MyBatis-PageHelper分页工具类

让人想犯罪 __ 提交于 2020-02-27 14:24:27
PageHelper 是 MyBatis 中非常方便的第三方分页插件 官方文档: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md 我们可以对照官方文档的说明,快速的使用插件 PageHelper 的使用步骤 导入相关包 pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar 在 MyBatis 全局配置文件中配置分页插件 <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins> PageHelper分页工具类 /** * 首页 上一页 1 2 3 4 5 下一页 末页 * */ public class PageUtil { public static String getPageInfo(PageInfo<Emp> pageInfo, HttpServletRequest request) { String path = request.getContextPath() + "/"; StringBuilder builder = new StringBuilder(); //拼接首页 builder.append("<a

【SSM_10】Mybatis-注解、扩展知识

半腔热情 提交于 2020-02-27 13:50:56
一、注解开发 //插入 @Insert("insert into orders value(null,#{ordertime},#{total},#{uid})") void save(Orders orders); //删除 @Delete("delete from orders where id = #{vaalue}") void del(int id); //修改 @Update("update orders set ordertime = #{ordertime},total = #{total},uid = #{uid} where id = #{id}") void edit(Orders orders); //查询所有 @Select("select * from orders") List<Orders> findAll(); //查询指定字段 @Select(" select * from orders where id = #{value}") Orders findById(int id); //一对一 查询 @Select("select * from orders") @Results({ @Result(property = "id",column = "id"), @Result(property = "ordertime",column =

Mybatis自定义SQL更新JSON字段抛错

China☆狼群 提交于 2020-02-27 13:28:41
### Cause: java.lang.IllegalStateException: Type handler was null on parameter mapping for property 'carouselPic'. It was either not specified and/or could not be found for the javaType ([Ljava.lang.String;) : jdbcType (VARCHAR) combination.] with root cause java.lang.IllegalStateException: Type handler was null on parameter mapping for property 'carouselPic'. It was either not specified and/or could not be found for the javaType ([Ljava.lang.String;) : jdbcType (VARCHAR) combination. UPDATE mf_shopping.product <set> <if test="visitsNum != null"> VISITS_NUM = #{visitsNum}, </if> <if test=

精选开源SpringBoot项目:涵盖权限、搜索、秒杀、支付!

白昼怎懂夜的黑 提交于 2020-02-27 12:53:51
发文以来,分享了一些科技资讯,今天首次整理一些开源项目分享。既是对自己的学习督促,也是对有需要人的一种便利。 开源项目一: mall商城 star数:29.8k 项目地址:https://github.com/macrozheng/mall mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。 开源项目二: 微人事人力资源管理系统,SpringBoot+Vue开发 star数:14k 项目地址:https://github.com/lenve/vhr 开源项目三: Spring-boot-pay支付项目 star数:5.2k 项目地址:https://gitee.com/52itstyle/spring-boot-pay 开源项目四: Spring-boot-seckill分布式秒杀系统 star数:6.4k 项目地址:https://gitee.com/52itstyle/spring-boot-seckill 开源项目五: Spring-boot-mail邮件服务

【SSM_09】Mybatis-多表操作、插件

独自空忆成欢 提交于 2020-02-27 12:52:58
一、映射文件增强 1. 动态 sql ① if 标签 <select id="find" parameterType="demo" resultType="demo"> select * from test <!-- where 标签中 if 有成立的会再 sql 语句后面自动添加 where --> <where> <!-- if 标签判断,条件成立后会添加标签体内容 and 底层处理 第一个自动去掉 and --> <if test="id != null"> and id = #{id} </if> <if test="name != null"> and name = #{name} </if> <if test="phone != null"> and phone = #{phone} </if> </where> </select> ---------------------------------------------------------------------------------------------------------------- ② forearch 标签 <select id="in" parameterType="demo" resultType="demo"> select * from test <where> <!-- 传入一个容器

【SSM_08】Mybatis-配置

时间秒杀一切 提交于 2020-02-27 12:17:24
一、Mybatis概述 1. 简介 mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。最后mybatis框架执行sql并将结果映射为java对象并返回。 采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。 2. 配置 ① 核心配置文件【mybatisConfig.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="jdbc.properties" /> <!--

代码生成器技术乱弹二十四,未来之野望,未实现的功能:动态包名后缀

烂漫一生 提交于 2020-02-27 12:14:13
现在,动词算子式代码生成器各个组件的包名是椰子树式的,就是除了包名前缀是可调的,各个组件的文件夹却是固定的。以光1.5.0而言永远是dao,service,serviceimpl,controller。在其他动词算子式代码生成器中还有daoimpl由于MyBatis的Dao实现是xml文件,故有这种情况。 而规划中的动词算子式代码生成器远为强大。它的包名后缀式可变的。 比如serviceimplsuffix:service.impl 这样,serviceimpl的包名后缀就改变了。 来源: oschina 链接: https://my.oschina.net/jerryshensjf/blog/3161444