03 - MyBatis
MyBatis
一角残叶
人生如逆旅,我亦是行人
展开
-
MyBatis(23)- mybatis 注解开发(2)
1 mybatis 注解开发一对一public interface IAccountDao { @Select("select * from account") @Results(id = "accountMap", value = { @Result(id = true, column = "id", property = "id"), @Result(column = "uid", property = "uid"),原创 2020-06-14 17:16:21 · 173 阅读 · 0 评论 -
MyBatis(22)- mybatis 注解开发
1原创 2020-06-14 16:36:45 · 177 阅读 · 0 评论 -
MyBatis(21)- mybatis 二级缓存
1 缓存存在于内存中的临时数据减少和数据库的交互次数经常查询并且不经常改变的数据的正确与否对最终结果影响不大的2 一级缓存一级缓存是SqlSession级别的缓存,只要SqlSession没有flush或close,它就存在。当执行查询之后,查询结果会同时存入到SqlSession为我们提供的一块区域中,该区域结构是一个Map2.1 证明一级缓存存在DAOpublic interface IUserDao { List<User> findAll();原创 2020-06-14 00:16:07 · 164 阅读 · 0 评论 -
MyBatis(20)- mybatis 延迟加载
1 延迟加载就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。延迟加载也称懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。2 一对一延迟加载2.1 实体类2.2 接口package com.tzb.dao;import com.tzb.domain.Account;import java.util.List;public interface IAccountDao { /** *原创 2020-06-13 16:23:20 · 164 阅读 · 0 评论 -
MyBatis(19)- JNDI数据源
1 JNDI简介JNDI:Java Naming and Directory Interface。是SUN公司推出的一套规范,属于JavaEE技术之一。目的是模仿windows系统中的注册表。在服务器中注册数据源1.1 新建工程pom <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis&l原创 2020-06-13 15:28:25 · 312 阅读 · 0 评论 -
MyBatis(18)- Mybatis多表操作(3)- 多对多
1原创 2020-06-13 12:01:35 · 216 阅读 · 0 评论 -
MyBatis(17)- Mybatis多表操作(2)- 一对多
1 user 的一对多查询IUserDao.xml <resultMap id="userAccountMap" type="user"> <id property="id" column="id"></id> <result property="username" column="username"></result> <result property="sex" colum原创 2020-06-12 23:38:31 · 128 阅读 · 0 评论 -
MyBatis(16)- Mybatis多表操作
1 表之间的关系一对多:用户和订单多对一:订单和用户一对一:一个人一个身份证号多对多:一个学生可以选多门课,每门课可以被多名学生选2 建立 account 表案例: 用户和账户一个用户可以有多个账户一个账户只能属于一个用户(多个账户也可以属于同一个用户)步骤:建立两张表:用户表、账户表。在账户表添加外键建立两个实体类:用户类和账户类。建立2个配置文件实现配置:当查询用户时,可以同时得到用户下所包含的账户信息。查询账户时,可以同时得到账户所属用户信息。DROP TA原创 2020-06-12 23:16:57 · 244 阅读 · 0 评论 -
MyBatis(15)- Mybatis 动态SQL
1原创 2020-06-12 11:32:13 · 208 阅读 · 0 评论 -
MyBatis(14)- Mybatis 连接池和事务
1 mybatis 连接池连接池就是用于存储连接的一个容器容器就是一个集合对象,该集合必须是线程安全的,不能两个线程拿到同一个连接该集合还必须实现队列的特性:先进先出mybatis 连接池提供了 3 种方式配置配置的位置: 主配置文件 SqlMapConfig.xml 中 dataSource 标签, type 属性就是表示采用何种连接池方式type 属性取值:POOLED : 采用传统 javax.sql.DataSource 规范中的连接池,mybatis 有针对规范的实现U原创 2020-06-11 22:51:09 · 204 阅读 · 0 评论 -
MyBatis(13)- properties、typeAliases、package标签
1 properties标签driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis-test?useSSL=false&characterEncoding=utf8username=rootpassword=root1.1 SqlMapConfig.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuratio原创 2020-06-11 17:44:56 · 188 阅读 · 0 评论 -
MyBatis(12)- mybatis实现 DAO开发
1 查询列表1.1 DAO接口package com.tzb.dao;import com.tzb.domain.User;import java.util.List;public interface IUserDao { List<User> findAll(); void saveUser(User user); void updateUser(User user); void deleteUser(Integer userId);原创 2020-06-11 17:11:21 · 148 阅读 · 0 评论 -
MyBatis(11)- 参数深入
1 MyBatis 参数1.1 传递 pojo 对象MyBatis 使用 OGNL 表达式解析对象字段的值,#{}或者 ${} 括号中的值为 pojo 属性名称。OGNL (Object Graphic Navigation Language),对象 图 导航 语言它是通过对象的取值方法来获取数据,写法上把 get 省略了。类中的写法 : user.getUserName()OGNL : user.usernamemybatis 为什么可以直接写 username, 而不用 user.原创 2020-06-11 15:22:53 · 191 阅读 · 0 评论 -
MyBatis(10)-保存操作的细节-获取保存数据的 id
1 新增用户 id 的返回值新增用户后,同时还要返回当前新增用户的id值,因为id是由数据库的自动增长来实现的,所以就相当于我们要在新增后将自动增长auto_increment的值返回。IUserDaovoid saveUser(User user);IUserDao.xml <insert id="saveUser" parameterType="com.tzb.domain.User"> <!--配置插入数据后,获取插入数据的 id-->原创 2020-06-11 11:47:54 · 1265 阅读 · 0 评论 -
MyBatis(9)- mybatis 的CRUD
log4j 配置# Set root category priority to INFO and its only appender to CONSOLE.#log4j.rootCategory=INFO, CONSOLE debug info warn error fatallog4j.rootCategory=debug, CONSOLE, LOGFILE# Set the enterprise logger category to FATAL and it.原创 2020-06-11 11:33:50 · 209 阅读 · 0 评论 -
MyBatis(8)- 自定义mybatis的编码(5) - 实现基于注解配置查询所有操作
1 SqlMapConfig<?xml version="1.0" encoding="UTF-8"?><!-- mybatis 的主配置文件--><configuration> <!--配置环境--> <environments default="mysql"> <environment id="mysql"> <!--配置事务类型-->原创 2020-06-10 22:41:17 · 220 阅读 · 0 评论 -
MyBatis(7)- 自定义mybatis的编码(4) - 实现基于 xml 的查询所有操作
1 DataSourceUtilpackage com.tzb.mybatis.utils;import com.tzb.mybatis.cfg.Configuration;import java.sql.Connection;import java.sql.DriverManager;public class DataSourceUtil { public static Connection getConnection(Configuration cfg) { .原创 2020-06-10 21:21:42 · 301 阅读 · 0 评论 -
MyBatis(6)- 自定义mybatis的编码(3) - 创建2个默认的实现类
1 SqlSession的实现类package com.tzb.mybatis.sqlsession.defaults;import com.tzb.mybatis.cfg.Configuration;import com.tzb.mybatis.sqlsession.SqlSession;/** * SqlSession的实现类 */public class DefaultSqlSession implements SqlSession { private Configurat.原创 2020-06-10 12:23:18 · 247 阅读 · 0 评论 -
MyBatis(5)- 自定义mybatis的编码(2) - 解析 xml
1 解析 xml1.1 引入依赖 <!-- https://mvnrepository.com/artifact/dom4j/dom4j --> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependen原创 2020-06-10 11:36:07 · 238 阅读 · 0 评论 -
MyBatis(4)- 自定义mybatis的编码(1) - 环境准备
1 根据测试类中缺少的创建接口和类原创 2020-06-10 11:30:10 · 409 阅读 · 0 评论 -
MyBatis(3)- 自定义mybatis分析
1 自定义 mybatis 分析mybatis 在使用代理dao的方式实现增删改查时做的工作?创建代理对象在代理对象中调用 selectList原创 2020-06-09 23:37:30 · 221 阅读 · 0 评论 -
MyBatis(2)- MyBatis基于注解开发
1 mybatis 注解开发移除 IUserDao.xml1.1 Dao 接口public interface IUserDao { @Select("select * from user") List<User> findAll();}1.2 mybatis 配置文件SqlMapConfig.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration P.原创 2020-06-09 22:58:03 · 152 阅读 · 0 评论 -
MyBatis(1)- MyBatis入门案例
1 持久层技术解决方案1.1 JDBC 技术ConnnectionPreparedStatementResultSet1.2 spring 的 JdbcTemplatespring中对 jdbc 的简单封装1.3 Apache 的 DBUtils以上这些都不是框架,JDBC是框架,其余2个是工具类2 MyBatis 概述mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建stat原创 2020-06-09 21:42:18 · 251 阅读 · 0 评论