MyBatis
codetwo
这个作者很懒,什么都没留下…
展开
-
MyBatis深入研究
MyBatis进阶 1.数据库环境切换 2.注解方式 3.增删改的返回值问题 4.Oracle事务提交 5.自增 1.数据库环境切换 (1)切换environment 在conf.xml中,指定实际使用的数据库 <environments default="developmentOracle"> <!--Oracle数据库--> <environment id="developmentOracle"> <transactionManager type="JD原创 2020-07-21 23:24:19 · 383 阅读 · 0 评论 -
十七、Mybatis内置的类型处理器
类型处理器 Java类型 JDBC类型 BooleanTypeHandler Boolean,boolean 任何兼容的布尔值 ByteTypeHandler Byte,byte 任何兼容的数字或字节类型 ShortTypeHandler Short,short 任何兼容的数字或短整型 IntegerTypeHandler Integer,int 任何兼容的数字和整型 LongTypeHandler Long,long 任何兼容的数字或长整型 FloatTypeHandl...原创 2020-07-21 18:24:37 · 186 阅读 · 0 评论 -
十六、逆向工程
1.概述 表、类、接口、mapper.xml四者密切相关,因此当知道一个的时候,其他三个应该可以自动生成 2.实现步骤 (1)jar mybatis-generator-core.jar mybatis.jar ojdbc.jar (2)generator.xml 逆向工程的配置文件generator.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybati原创 2020-07-21 18:20:00 · 90 阅读 · 0 评论 -
十四、禁用、清理二级缓存
1.禁用 <!--useCache="false"--> <select id="queryAllStudents" resultType="student" useCache="false"> select * from student </select> 2.清理 (1)与清理一级缓存的方法相同 commit会清理一级和二级缓存,但是清理二级缓存时,不能是查询自身的commit() 一般执行增删改时会清理掉缓存,设计的原因是为了防止脏数据 但是在清理二级缓存中,c原创 2020-07-21 18:18:31 · 162 阅读 · 0 评论 -
十三、查询缓存
1.一级缓存 同一个SqlSession对象 MyBatis默认开启一级缓存,如果用同样的SqlSession对象查询相同的数据 则只会在第一次查询时向数据库发送SQL语句,并将查询的结果放入到SqlSession中 (作为缓存在后续再次查询该同样的对象时,则直接从缓存中查询该对象即可,即省略了数据库的访问) public static void queryStudentByStuno() throws IOException { Reader reader = Resources.getResource原创 2020-07-21 18:16:53 · 111 阅读 · 0 评论 -
十二、延迟加载
1.使用场景 一对一、一对多、多对一、多对多 例如:一对一:学生、学生证,一对多:班级——学生 如果不采用延迟加载(立即加载),查询时会将一和多都查询,班级、班级中的所有学生 如果想要暂时只查询一的一方,而多的一方先不查询,而是在需要的时候再去查询,就要用到延迟加载 2.一对一 (1)conf.xml <settings> <!-- 开启日志,并指定使用的具体日志 --> <setting name="logImpl" value="LOG4J"/> <原创 2020-07-21 18:16:13 · 73 阅读 · 0 评论 -
十一、整合log4J日志
1.log4j依赖的jar log4j.jar (mybatis.zip中lib中包含此jar) 2.开启日志 在conf.xml中开启 <settings> <!-- 开启日志,并指定使用的具体日志 --> <setting name="logImpl" value="LOG4J"/> </settings> 如果不指定,Mybatis就会根据以下顺序 寻找日志 SLF4J →Apache Commons Logging →Log4j 2 → Log4原创 2020-07-21 18:15:19 · 72 阅读 · 0 评论 -
十、关联查询
1.一对一 (1)业务扩展类 用resultType指定类的属性包含多表查询的所有字段 package nuc.hzb.entity; public class Student { private int stuNo; private String stuName; private int stuAge; private String graName; private boolean stuSex; private Address address; public Student()原创 2020-07-21 18:14:38 · 109 阅读 · 0 评论 -
九、动态SQL
1.重复代码 // 查询全部 String statement = "select stuno,stuname from student"; // 根据年龄查询学生 String statement = "select stuno,stuname from student where stuage = #{stuage}"; // 根据姓名和年龄查询学生 String statement = "select stuno,stuname from student where stuname = #{st原创 2020-07-21 18:13:44 · 88 阅读 · 0 评论 -
八、输出参数
1.简单类型(8个基本+String) <select id="queryStudentCount" resultType="int"> select count(*) from student </select> 2.输出参数为实体对象类型 <select id="queryStudentByStuno" parameterType="int" resultType="student"> select * from student where stuno = #{原创 2020-07-16 21:30:20 · 280 阅读 · 0 评论 -
七、调用存储过程
1.查询某个年级的学生总数 输入:年级 输出:学生总数 create or replace procedure queryCountByGradeWithProcedure(gName in varchar, sCount out number) as begin select count(*) into sCount from student where gname = graName; end; <!-- 通过调用存储过程实现查询 存储过程的输入参数,在MyBatis用Map来传递原创 2020-07-16 12:52:52 · 351 阅读 · 0 评论 -
六、输入参数(parameterType)
1.类型为简单类型(8个基本类型+String) #{}、${}的区别 区别1 #{任意值} ${value} ,其中的标识符只能是value <select id="queryStudentByStuname" parameterType="string" resultMap="studentResult"> <!-- select * from student where stuname = #{stuname} --> select * from student where原创 2020-07-16 12:50:51 · 381 阅读 · 0 评论 -
五、类型处理器(转换器)
1.自带类型处理器 int——number等 2.自定义类型处理器 java——数据库(jdbc类型) 3.示例 实体类Student boolean stuSex true:男 false:女 表student number stuSex 1:男 0:女 4.自定义类型转换器步骤 (1)创建转换器 通过阅读源码发现,此接口有一个实现类BaseTypeHandler ,因此要实现转换器有2种选择 a.实现接口TypeHandler接口 b.继承BaseTypeHandler package nuc.原创 2020-07-16 12:49:28 · 140 阅读 · 0 评论 -
四、优化
1.db.properties 可以将配置信息单独放入db.properties文件中,然后再动态引入 db.properties:k=v(在conf.xml中通过k的值来取v的值) 引入之后,使用${key} (1)db.properties driver=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL username=scott password=tiger (2)conf.xml <?xml vers原创 2020-07-16 11:02:54 · 116 阅读 · 0 评论 -
三、动态代理(接口方式)
1.概念 (也就是mapper动态代理方式的CRUD ) ①原则 约定优于配置 ②硬编码方式 abc.java Configuration configuration = new Configuration(); configuration.setName("MyProject") ; ③配置方式 abc.xml <name>MyProject</name> ④约定方式 默认值就是MyProject 2.实现步骤 (1)基础环境 mybatis.jar/ojdbc.jar原创 2020-07-16 10:59:35 · 286 阅读 · 0 评论 -
二、基础方式增删改查
1.需要导入两个jar包 mybatis.jar和ojdbc.jar两个jar包 2.conf.xml 该文件包含数据库配置信息、映射文件 3.表和类之间的mapper.xml 映射文件mapper.xml,映射文件目前与类放在同一个包中,后序会进行一定的调整 4.基础方式 (1)基础方式的增删改查CRUD MyBatis约定:输入参数parameterType和输出参数resultType,在形式上都只能有一个 如果输入参数:是简单类型(8个基本类型+String)是可以使用任何占位符,#{xxxx} 如原创 2020-07-16 10:56:08 · 149 阅读 · 0 评论 -
一、MyBatis入门
MyBatis入门 1.MyBatis 曾用名:ibatis:apache 2010年,apache转给google colde,改名为MyBatis 2.作用 MyBatis可以简化JDBC操作,实现数据的持久化 3.ORM ORM是一个概念:Object Relational Mapping,进行一个对象和表的映射 MyBatis是ORM的一个实现/Hibernate也是ORM的一个实现 person对象与person表映射 ORM可以是开发人员像操作对象一样操作数据库表 4.开发MyBatis程序步骤原创 2020-07-15 22:19:56 · 119 阅读 · 0 评论