Mybatis
欧皇小德子
这个作者很懒,什么都没留下…
展开
-
Mybatis -> #{}和${}的区别是什么?
#{}和${}的区别是什么?**#{}**是预编译处理、是占位符, **${}**是字符串替换、是拼接符。Mybatis 在处理**#{}时,会将 sql 中的#{}**替换为?号,调⽤ PreparedStatement 来赋值;Mybatis 在处理时**∗∗就是把∗∗{}**就是把**∗∗就是把∗∗{}**替换成变量的值,调⽤ Statement 来赋值;#{} 的变量替换是在DBMS 中、变量替换后,#{} 对应的变量⾃动加上单引号**∗∗的变量替换是在DBMS外、变量原创 2022-03-09 22:32:05 · 298 阅读 · 0 评论 -
MyBatis -> MyBatis 与Hibernate 有哪些不同?
MyBatis 与Hibernate 有哪些不同?SQL 和 ORM 的争论,永远都不会终⽌开发速度的对⽐:Hibernate的真正掌握要⽐Mybatis难些。Mybatis框架相对简单很容易上⼿,但也相对简陋些。⽐起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项⽬需求去考虑究竟哪⼀个更适合项⽬开发⽐如:⼀个项⽬中⽤到的复杂查询基本没有,就是简单的增删改查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不需要你去写sql语句,这就原创 2022-03-09 22:28:05 · 322 阅读 · 0 评论 -
Mybatis -> Mybatis的优缺点
Mybatis的优缺点优点:基于 SQL 语句编程,相当灵活,不会对应⽤程序或者数据库的现有设计造成任何影响,SQL 写在XML ⾥,解除 sql 与程序代码的耦合,便于统⼀管理;提供 XML 标签, ⽀持编写动态 SQL 语句, 并可重⽤。与 JDBC 相⽐,减少了 50%以上的代码量,消除了 JDBC ⼤量冗余的代码,不需要⼿动开关连接;很好的与各种数据库兼容( 因为 MyBatis 使⽤ JDBC 来连接数据库,所以只要JDBC ⽀持的数据库 MyBatis 都⽀持)。能原创 2022-03-09 22:18:09 · 684 阅读 · 0 评论 -
Spring -> Mybatis配置xml及查询测试
1.xml配置文件:<?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:context="http://www.springframework.org/schema/context" x原创 2020-10-16 11:08:18 · 393 阅读 · 0 评论 -
Spring -> Mybatis事务注解(@Transactional)实现回滚
1.xml<?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:context="http://www.springframework.org/schema/context" xmlns:原创 2020-10-17 15:29:14 · 2861 阅读 · 0 评论 -
Spring -> mybatis整合,xml配置模版,数据库数据源
<?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:context="http://www.springframework.org/schema/context" xmlns:aop="h原创 2020-10-18 14:51:57 · 223 阅读 · 0 评论 -
MySQL -> DQL:子查询:跟在where后面的子查询
跟在where后面的子查询:“查询工资大于平均工资的员工name”:子查询返回一个单行单列的数据;><="查询工资大于平均工资的员工name"# 正常思路:可惜:where后面不能使用分组函数SELECT salary,last_nameFROM employeesWHERE salary > AVG(salary);# 错误写法# 正确的写法:使用子查询,子查询返回一个单号单列的数据# salary字段中每个数据都会与返回的avg比较,满足筛选条件的就显示查询SELE原创 2020-11-05 13:23:01 · 1435 阅读 · 0 评论 -
MySQL -> DQL:select后面的子查询,from后面的子查询
子查询:select后面的查询:只能跟一行一列的子查询如count“查询所有部门的员工个数”:"查询所有部门的员工个数":# 以前的写法:使用inner内连接两个表,分组部门select 部门表.部门,count(*)from 员工表inner join 部门表on 员工表.部门id = 部门表.部门idgroup by 部门表.部门# 子查询:select后面只能跟一行一列的,不能出现多个数据,如子查询查询的是一列数据select 部门,( select count(*) fro原创 2020-11-07 16:52:47 · 2423 阅读 · 0 评论 -
MySQL -> DQL:相关子查询(exists),分页查询(limit),联合查询(union)
相关子查询:exists判断存不存在,返回值1或者0"查询存在的id":存在就返回1,没有任何数据就返回0select exists( select id from 表);"查询员工id,条件必须存在id为100的员工":存在就返回1,输出(这里输出是输出所有id,不是id只是100的,exists只是返回1或0,不会筛选掉id!=100的数据)没有任何数据就返回0,啥也不输出(这就真不输出了,只要数据中没有id=100的,就什么也不输出)select idfrom 表where ex原创 2020-11-07 17:07:13 · 470 阅读 · 0 评论 -
Mybatis -> 找不到资源(maven问题), java.io.IOException: Could not find resource xx.xml
添加一段build<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include>原创 2020-11-11 19:50:06 · 250 阅读 · 0 评论 -
Mybatis -> 创建第一个项目,连接数据库,select数据
步骤:1.导包jar2.连接数据库的配置文件,连接好数据库3.创建一个对应数据库的java类,和要操作数据库的接口和实现类(这里的实现类用xml方式实现了,结果都是要在实现类中写sql语句,操作数据库的)4.创建mybatis的工厂类,其实就是框架的配置类,运行整个框架的,与spring的那些配置类相同意思1.maven导入jar包,mybatis,mysql,junilt <!--mybatis包--> <dependency>原创 2020-11-11 20:25:11 · 213 阅读 · 0 评论 -
Mybatis -> 实现数据库增删改查
1.配置文件:连接数据库<?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> <!--development:表示可以连接多个数据库,这里的原创 2020-11-11 21:42:22 · 1020 阅读 · 0 评论 -
Mybatis -> like模糊查询(concat),连接数据库使用(数据库?useUnicode=true&;characterEncoding=UTF-8)解决中文无法识别问题
连接数据库:重点是“jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8”,识别中文否则后面查询会识别不了中文<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://myba原创 2020-11-12 14:33:59 · 1498 阅读 · 0 评论 -
Mybatis -> 别名优化(typealias),打印日志(logImpl-STDOUT_LOGGING)
<!-- 配置文件properties路径 注意配置属性的顺序,properties在第一位 --> <properties resource="db.properties"/> <!-- 别名:package-开启包扫描,包下的所有类都可以扫到,写的时候写类的小写开头就可以 可以在类的上面加Alias注解起自定义别名 --> <typeAliases> &...原创 2020-11-12 15:28:26 · 892 阅读 · 1 评论 -
Mybatis -> 映射器(mappers),xml文件测试
官方的:mybati官网有详细的https://mybatis.org/mybatis-3/zh/configuration.html#mappersresource:推荐使用,没有什么条件限制,只要写对路径就可以,注意resource路径都是用/分开不是.缺点就是没有package那么简单,每有一个接口,xml就需要注册一次<!-- 使用相对于类路径的资源引用 --><mappers> <mapper resource="org/mybatis/builder/原创 2020-11-12 15:49:57 · 571 阅读 · 2 评论 -
Mybatis -> 数据库,数据库实例类字段属性不一致(resultmap)
使用resultmap代替resulttype解决数据库字段与数据库实例类属性字段名不同的问题使用resultmap设置字段与类属性映射数据库字段 id name psw数据库实例类属性 id name password<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati原创 2020-11-12 16:55:31 · 393 阅读 · 0 评论 -
Mybatis -> Log4J使用,log4j配置文件,详细解释请百度百科log4j
log4j配置文件#详细可以查看log4j的百度百科 https://baike.baidu.com/item/log4j/480673?fr=aladdin#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码log4j.rootLogger=DEBUG,console,file#控制台输出的相关设置log4j.appender.console = org.apache.log4j.ConsoleAppenderlog4j.app原创 2020-11-12 19:10:13 · 191 阅读 · 0 评论 -
Mybatis -> 分页查询(limit),使用map设置limit
xml List<Mybatis> selectlist(Map<String,Object> map);<?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原创 2020-11-12 20:01:38 · 1179 阅读 · 0 评论 -
Mybatis -> 注解方式实现sql语句
接口:注解package dao;import mysqlclass.Mybatis;import org.apache.ibatis.annotations.Select;import java.util.List;import java.util.Map;/** * 功能描述: 直接在方法上用注解,但是只能写一些简单的sql语句,复杂的sql语句还是需要在xml中完成 */public interface ImpMapper { @Select("select * from原创 2020-11-12 20:40:57 · 1071 阅读 · 0 评论 -
Mybatis -> 注解传入多个参数,开启事务自动提交
开启事务自动提交配置类:openSession(true),开启事务自动提交 public static SqlSession getSqlSession() { SqlSession session = sqlSessionFactory.openSession(true); return session; }接口中注解传入多个参数:@param,这些参数是基本数据类型的那些,不是对象public interface ImpMapper { @Insert("inser原创 2020-11-13 21:56:36 · 518 阅读 · 0 评论 -
Mybatis -> 多对一处理,一是一个对象(associate)
接口,xmlpublic interface StudentMapper { List<Student> setSelect();}使用associate配置对象的属性:associate只是配置一个对象<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybati原创 2020-11-14 15:04:13 · 1111 阅读 · 0 评论 -
Mybatis -> 一对多处理,多是多个对象(collection)
接口,实体类public interface TeacherMapper { Teacher setSelect(int id);} private int id; private String name; //多个student存在list中 private List<Student> student;xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PU原创 2020-11-14 18:28:51 · 861 阅读 · 0 评论 -
Mybatis -> 动态SQL之if
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD com.Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.mapper.BlogMapper"> <insert id="setInser原创 2020-11-14 21:45:30 · 194 阅读 · 0 评论 -
Mybatis -> 动态SQL之choose、when、otherwise
choose when otherwise:相当于swich,when是case,otherwise是default<select id="setSelect" resultType="Blog"> select * from blog /*where用来去掉可能多出来的and 注释也不能乱写位置,会报错的*/ <where> <choose> <when te原创 2020-11-14 21:47:27 · 2356 阅读 · 0 评论 -
Mybatis -> 动态SQL之trim,set
set: <update id="setUpdate"> update blog /*set里面就都是些赋值什么,就不要搞where那种标签进去了,会报错的*/ /*set中加choose要加默认的otherwise,不然update没set也没意义了 且choose只会执行一个条件,所以,也不用加了*/ <set> <choose> <w原创 2020-11-14 21:54:03 · 750 阅读 · 0 评论 -
Mybatis -> XML 映射器(select,insert, update 和 delete)
select查询语句是 MyBatis 中最常用的元素之一——光能把数据存到数据库中价值并不大,还要能重新取出来才有用,多数应用也都是查询比修改要频繁。 MyBatis 的基本原则之一是:在每个插入、更新或删除操作之间,通常会执行多个查询操作。因此,MyBatis 在查询和结果映射做了相当多的改进。一个简单查询的 select 元素是非常简单的。比如:<select id="selectPerson" parameterType="int" resultType="hashmap"> S原创 2020-11-14 21:58:21 · 1003 阅读 · 0 评论 -
Mybtis -> XML 映射器(SQL)重用sql语句
include :进口,引进xx refid:参考id,涉及到的id <update id="setUpdate"> update blog /*set的if标签必须记得加,逗号 否则会报错,因为可能会满足多个条件*/ <set> <include refid="if-update"/> </set> where author=#{author}原创 2020-11-15 12:37:54 · 520 阅读 · 1 评论 -
Mybatis -> 动态SQL之foreach
foreach:实例一collection:需要遍历的集合或者数组名字,等会你传入的数字集合的名字item:这个是下面你需要变量出来的东西的名字,随便起,只要下面#{}中对应就可以,相当于接受遍历出来的数据open:前缀,如下面的语句应该要写where id in(x,x,x),所以前缀就是 id in(separator:这应该算中间缀,就是中间要加的东西们这里要加逗号,也可以加and or这种close:这就是后缀了,一般都是)这些后缀#{id}:这个id就是item命名的,东西会接受到遍历原创 2020-11-15 13:09:42 · 1093 阅读 · 0 评论 -
Mybatis -> XML配置,设置二级缓存(cache)
配置xml中:显示开启二级缓存cacheEnabled-true;虽然默认就是开启的注意:数据库实体类要支持序列化,实现Serializable接口public class Blog implements Serializable <settings> <setting name="cacheEnabled" value="true"/> </settings>mapper.xml总开启缓存:<mapper namesp原创 2020-11-15 14:27:00 · 1291 阅读 · 0 评论 -
SSM -> 框架整合
1.导包:2.mybatis-spring整合:spring-mapper.xml3.spring自己的xml:service层,下面是mapper操作数据库层,上面是前端4.spring-mvc.xml:前端5.总applicationContext.xml 整合所有xml到一个接口其实所有的spring.xml都可以写到一个xml里,只是一大顿看起来实在看不懂1.导包:<dependencies> <!--Junit--> <dependenc原创 2020-11-18 22:20:38 · 107 阅读 · 0 评论 -
SSM -> 第一个整合:前端书籍页面crud数据库
数据库环境CREATE DATABASE `ssmbuild`;USE `ssmbuild`;DROP TABLE IF EXISTS `books`;CREATE TABLE `books` (`bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',`bookName` VARCHAR(100) NOT NULL COMMENT '书名',`bookCounts` INT(11) NOT NULL COMMENT '数量',`de原创 2020-11-20 13:49:57 · 496 阅读 · 0 评论 -
SpringBoot -> 整合Mybatis
文章目录结构图导入mybatis-jar包配置druid数据源,过滤器pojo,mapper,mapper.xmlservice,controllerapplication.yamlspring启动类结构图导入mybatis-jar包<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</art原创 2020-12-06 09:25:12 · 86 阅读 · 0 评论