mybatisday01课堂笔记
Mybatis培训第一课

Mybatis培训第一课一、创建练习mybatis的项目:1、新建一个web项目,导入mybatis包及其依赖包、数据库驱动包;2、创建一个students表:3、在类路径下创建mybatis-config.xml文件;4、在com.mybatis3.mappers包下创建StudentMapper.xml文件;5、在com.mybatis3.util包中创建MyBatisSqlSessionFactory工具类,用于获取SqlSessionFactory;6、创建一个Student bean;7、创建StudentMapper接口,接口中方法的名字和StudentMapper.xml中映射语句的id相同;8、创建StudentService类,完成对student表的操作;9、测试二、理论学习:mybatis-config.xml文件EnvironmentMyBatis可以配置多种数据库环境。
这会帮助你将SQL映射应用于多种数据库之中。
例如,你可以配置开发环境数据库和生产环境数据库:你可以配置多种环境,但你只能为每个SqlSessionFactory实例选择一个。
所以,如果你想连接两个数据库,你需要创建两个SqlSessionFactory实例,每个数据库对应一个。
而如果是三个数据库,你就需要三个实例,以此类推。
有些时候我们需要在一个应用中连接两个数据库,此时你就呀配置两个独立的environment,进而为每个数据库创建一个SqlSessionFactory:DataSource此配置元素用来配置数据库连接的各个参数。
mybatis数据源的类型为三种内建的数据源类型之一:UNPOOLED, POOLED, JNDI.1.UNPOOLED –这个数据源的实现是每次被请求时简单打开和关闭连接。
它有一点慢,这是对简单应用程序的一个很好的选择,因为它不需要及时的可用连接。
2.POOLED –这是JDBC连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间。
MyBatis核心技术全解与项目实战读书笔记

《MyBatis核心技术全解与项目实战》读书笔记1. 第一章 MyBatis简介本章主要介绍了MyBatis的基本概念、特点和优势,以及其在Java企业级应用开发中的重要作用。
MyBatis是一个优秀的持久层框架,它将SQL语句与Java对象映射(POJO)相结合,使得开发人员可以更加方便地操作数据库。
MyBatis的主要目标是简化数据库操作,提高开发效率,同时也提供了良好的数据封装和安全性。
SqlSessionFactory:用于创建SqlSession对象,SqlSession是MyBatis中执行SQL语句的核心接口。
SqlSession:用于执行SQL语句的会话对象,可以通过它来执行增删改查等操作。
Mapper:映射器接口,用于定义SQL语句和Java对象之间的映射关系。
Configuration:MyBatis的全局配置类,用于配置各种属性,如缓存策略、事务管理等。
插件:MyBatis的插件机制,允许开发者自定义拦截器、类型处理器等组件,以实现对MyBatis的功能扩展。
灵活性:MyBatis支持多种存储结构,如JDBC、ODBC、JNDI等,同时还支持自定义类型处理器和插件,使得MyBatis能够满足各种复杂的数据库操作需求。
易用性:MyBatis提供了简洁的XML映射文件来描述SQL语句和Java对象之间的映射关系,使得开发者无需编写复杂的SQL语句即可完成数据库操作。
性能优化:MyBatis通过一级缓存和二级缓存机制来提高查询性能,同时还支持动态SQL、分页查询等功能,使得MyBatis能够在高并发环境下保持良好的性能表现。
安全性:MyBatis提供了严格的权限控制机制,可以限制不同用户对数据库的操作权限,保证数据的安全性。
1.1 MyBatis概念及特点MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。
相比于传统的数据访问技术,MyBatis让开发者能够更加直接地与数据库交互,从而有效地避免了大量繁琐的SQL语句编写工作。
Mybatis学习笔记

Mybatis学习笔记Mybatis学习笔记什么是框架?它是我们软件开发中的⼀套解决⽅案,不同的框架解决的是不同的问题。
使⽤框架的好处:框架封装了很多的细节,使开发者可以使⽤极简的⽅式实现功能,⼤⼤提⾼开发效率。
三层架构表现层:⽤于展⽰数据业务层:处理业务需求持久层:和数据库交互的持久层技术解决⽅案JDBC技术:ConnectionPreparedStatementResultSetSpring的JdbcTemplate:Spring中对jdbc的简单封装Apache的DBUtils:它和Spring的JdbcTemplate很像,也是对jdbc的简单封装以上这些都不是框架,JDBC是规范,Spring的JdbcTemplate和Apache的DBUtils都只是⼯具类Mybatis框架概述mybatis 是⼀个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本⾝,⽽不需要花费精⼒去处理加载驱动、创建连接、创建statement等繁杂的过程。
mybatis通过xml或注解的⽅式将要执⾏的各种statement 配置起来,并通过java对象和statement中 sql的动态参数进⾏映射⽣成最终执⾏的sql 语句,最后由 mybatis框架执⾏sql并将结果映射为java对象并返回。
采⽤ORM思想解决了实体和数据库映射的问题,对 jdbc进⾏了封装,屏蔽了jdbc api底层访问细节,使我们不⽤与 jdbc api打交道,就可以完成对数据库的持久化操作。
ORM:Object Relational Mappging对象关系映射简单的说就是把数据库表和实体类及实体类的属性对应起来让我们可以操作实体类就实现操作数据库表。
Mybatis的⼊门Mybatis的环境搭建:第⼀步:创建maven⼯程并导⼊坐标(导⼊架包)第⼆步:创建实体类和dao的接⼝第三步:创建Mybatis的主配置⽂件(SqlMapConfig.xml)第四步:创建映射配置⽂件(IUserDao.xml)环境搭建的注意事项:第⼀个:创建IUserDao.xml和IUserDao.java时名称是为了和我们之前的知识保持-致。
MyBatis框架思维导图笔记总结

<!-- 模糊查询 --> <select id="findLike" resultMap="userMap">
select * from user where user_name like "%"#{name}"%" </select>
<update id="updateUser"> update user set user_name=#{userName}, password=#{password} where id=#{id}
select last_insert_id() </selectKey> </insert>
<!-- select元素中指定resultType(找到与字段同名的属性名,赋值)或者 resultMap(用于字段和属性不一 致)-->
<select id="findUserById" ultMap="userMap"> select * from user where id = #{id}
PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd"> <!-- namespace为唯一标识,映射器接口的全限定名 --> <mapper namespace="erMapper">
<insert id="insertUser" parameterType="er" useGeneratedKeys="true" keyProperty="id"> insert into user(id,username,password) values(#{id},#{userName},#{password})
mybatis知识学习记录文本

第十六章回顾SQL99中的连接查询1)内连接2)外连接3)自连接第十七章回顾hibernate 多表开发1)一对一2)一对多3)多对多第十八章mybatis —对一映射【学生与身份证】1)参见<< 一对一图示.JPG>>2)创建students.sql 禾口cards.sqldrop table students;drop table cards;create table cards(id int (5) primary key,num varchar (20));create table students(3)创建Students.java 和Card.javapublic class Card {private In teger id;private Stri ng num ;private Stude nt student ;public Card(){}public In teger getId() {return id;}public void setId(Integer id) {this .id = id;}public Stri ng getNum() { return num ;}public void setNum(String num) { this .num = num;}public Stude nt getStude nt() {return student ;}public void setStudent(Student student) { this .student = student;}}public class Student {private Integer id ;private String name ;private Card card ;public Stude nt(){}public In teger getId() {return id;}public void setId(Integer id) {this .id = id;}public String getName() {return name ;}public void setName(String name) {this .name = name;}public Card getCard() {return card ;}public void setCard(Card card) {this .card = card;}}4)创建StudentMapper.xml 和CardMapper.xmlCardMapper.xmlid = "cardMap" ></ mapper >Stude ntMapper.xml5)创建StudentCardDao.javapublic class StudentCardDao {/**m());第十九章mybatis —对多映射【班级与学生】1)参见<< 一对多图示JPG>>2)创建grades.sql 禾口students.sql3)创建Grade.java 和Student.sql*班级(单方)* @author AdminTC*/public class Grade {private Integer id;private String name ;private List<Stude nt> stude ntList =new ArrayList<Student>();public Grade(){}public In teger getId() {return id;*学生(多方)* @author AdminTC*/public class Student {private Integer id ;private String name ;private Grade grade ;public Stude nt(){}public In teger getId() {return id;}public void setId(Integer id) {this .id = id;}public String getName() {return name ;}public void setName(String name) { this .name = name;}public Grade getGrade() {return grade ;}public void setGrade(Grade grade) {this .grade = grade;}}4)创建GradeMapper.xml 和StudentMapper.xmlGradeMapper.xmlwhere g.gid = s.sgidand s.s name = #{n ame} </ select ></ mapper >Stude ntMapper.xmland g.g name = #{n ame}</ select ></ mapper >5)创建GradeStudentDao.javapublic class GradeStudentDao {/***查询java班级有哪些【学生】*/public List<Stude nt> fin dAIIByName(Stri ng name) throws Exceptio n{ SqlSession sqlSession = null ;try {sqlSession = MybatisUtil. getSqlSession ();returnsqlSessi on. selectList( "stude ntNamespace.fi ndAIIByName" ,n ame);}catch (Exception e){e.pri ntStackTrace();throw e;}finally {MybatisUtil. closeSqlSession ();/**Grade grade = dao.findGradeByName( "哈哈”);System. out .println(grade.getld()+ ":" +grade.getName());}第二十章mybatis 多对多映射【学生与课程】1)参见<< 多对多图示JPG>>2)创建students.sql 禾口courses.sql 禾口middles.sqldrop table middles;drop table students;drop table courses;create table students(sid int (5) primary key , sname varchar (10));create table courses(cid int (5) primary key , cname varchar (10));create table middles(sid int (5), cid int (5), primary key (sid,cid));insert into students(sid,sname) values (1,'哈哈');insert into students(sid,sname) values (2,'呵呵');insert into courses(cid,cname) values (1,'java');insert into courses(cid,cname) values (2,'net');insert into middles(sid,cid) values (1,1);insert into middles(sid,cid) values (1,2);insert into middles(sid,cid) values (2,1);insert into middles(sid,cid) values (2,2);select * from students;select * from courses;select * from middles;3)创建Student.java 禾口Course.java4)创建StudentMapper.xml 和CourseMapper.xmlStude ntMapper.xmlCourseMapper.xml</ resultMap >< select id = "findCourseByName" parameterType = "string"resultMap = "courseMap" >select c.cid,c.c namefrom stude nts s,middles m,courses cwhere s.sid = m.sidand m.cid = c.cidand s.s name = #{n ame}</ select ></ mapper >5)创建students.sql 禾口courses.sql 禾口middles.sqlpublic class StudentCourseDao {/***查询哈哈选学的【课程】*/public List<Course> fin dCourseByName(Stri ng n ame) throws Exceptio n{ SqlSession sqlSession = null ;try {sqlSession = MybatisUtil. getSqlSession ();returnsqlSessi on. selectList( "courseNamespace.fi ndCourseByName" ,n ame);}catch (Exception e){/**第二十一章spring + mybatis + mysql/oracle 开发1 )创建一个spring-mybatis-mysql 这么一个javaweb 或java 工程2)导入spring-ioc , spring-aop , spring-transaction , mybatis , c3p0 , mysql/oracle 相关的jar 包禾口spring 整合mybatis 的jar包3)创建students.sql--mysqlcreate table students(sid int (5) primary key ,sname varchar (10),ssal double (8,2));4) 创建 Student.java/***学生Stude nt(l nteger id, String n ame, Double sal) {public In teger getId() {return id;public void setId(Integer id) {this .id = id;* @author Admi nTC*/public class Stude nt {private Integer id ;// 编号private String name ;// 姓名private Double sal 〃 薪水public Stude nt(){}this .id =id;this .n ame = n ame;this .sal = sal;publicpublic String getName() {return name ;}public void setName(String name) {this .name = name;}public Double getSal() {return sal;}public void setSal(Double sal) {this .sal = sal;}}5)创建StudentMapper.xml6)创建StudentDao.java7) 在src 目录下创建mybatis.xml</ mappers ></ configuration >/schema/bea ns/spri ng-bea ns-3.0.xsd/schema/c on text/schema/c on text/spri ng-c on text-3.0.xsd/schema/aop/schema/aop/spri ng-aop-3.0.xsd/schema/tx/schema/tx/spri ng-tx-3.0.xsd/schema/mvc/schema/mvc/spri ng-mvc-3.0.xsd"><!--C3P0()--><!--StudentDao -->第二十二章jsp/js/jquery/easyui/json + @springmvc + spring + mybatis + mysql/oracle 开发1)员工管理系统--增加员工第二十三章jdbc访问oracle存储过程和存储函数1)写一个计算个人所得税的应用--定义过程create or replace procedure get_rax(salary in nu mber,rax out nu mber) as--需要交税的钱bal nu mber;beginbal := salary - 3500;if bal<=1500 thenrax := bal * 0.03 - 0;elsif bal<=4500 thenrax := bal * 0.1-105;elsif bal<=9000 thenrax := bal * 0.2 - 555;elsif bal<=35000 thenrax := bal * 0.25 - 1005;elsif bal<=55000 thenrax := bal * 0.3 - 2755;elsif bal<=80000 thenrax := bal * 0.35 - 5505; elserax := bal * 0.45 - 13505; end if; en d;JdbcUtil. close (cstmt);JdbcUtil. close (conn);}查询7788号员工的的姓名,职位,月薪pen ame emp.e name%type;pjob emp.job%type;psal emp.sal%type;beginpen ame := fin dEmpNameA ndJobA ndSal(7788,pjob,psal);dbms_output.put_li ne('7788'『--'||pe name|卜-'||pjob『--'||psal); en d;///Java调用函数public class TestCallOracleFunc {public static void main(String[] args) throws Exception{String sql = "{?=call findEmpNameAndJobAndSal(?,?,?)}"Connection conn = JdbcUtil. getConnection ();CallableStatement cstmt = conn.prepareCall(sql);VARCHAR);cstmt.registerOutParameter(1,Types.cstmt.setlnt(2,7788);cstmt.registerOutParameter(3,Types. cstmt.registerOutParameter(4,Types. VARCHAR); INTEGER);cstmt.execute();String ename = cstmt.getString(1);String job = cstmt.getString(3);Integer sal = cstmt.getInt(4);System. out .println(ename+ ":" +job+ ":" +sal); JdbcUtil. close (cstmt);JdbcUtil. close (conn);。
MyBatis部分笔记

mybatis入门小结:mybatis一个半自动化的持久层框架(SQL抽取出来进行手动编写),支持定制化SQL。
1、接口式编程原生:Dao ==> DaoImplmybatis:Mapper ==> xxMapper.xml2、SqlSession代表和数据库的一次回话,用完就要关闭3、SqlSession和Connection一样是非线程安全的,不能写成员变量,每次使用都应该new新的对象4、mapper接口没有实现类,但是mybatis会为接口类型生成一个代理对象5、连个配置文件1)全局配置文件mybatis-config.xml:包含事务管理器,数据源等信息。
2)SQL映射文件:保存了每个SQL语句映射信息,唯一标识,返回结果类型等信息,通过这种方式将关键SQL语句抽取出来自己写。
<!-- 写好的映射文件一定要注册到全局mybatis-config.xml配置文件之间去--><mapper resource="EmployeeMapper.xml" />mybatis基本使用过程:1.得到sqlSessionFactory对象2.获取sqlSession对象3.获取接口的实现类对象会为接口自动创建一个代理对象,代理对象执行增删改查操作4.mapper的接口的方法每个线程都应该有它自己的SqlSession 实例。
SqlSession 的实例不能共享使用,它也是线程不安全的。
因此最佳的范围是请求或方法范围。
SqlSession 的实例不是线程安全的,因此是不能被共享的。
mybatis关于缓存?两级缓存:一级缓存:(本地缓存):sqlSession级别的缓存。
一级缓存是一直开启的;SqlSession级别的一个Map 与数据库同一次会话期间查询到的数据会放在本地缓存中。
以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库;一级缓存失效情况(没有使用到当前一级缓存的情况,效果就是,还需要再向数据库发出查询):1、sqlSession不同。
mybatis第一天课堂笔记

mybatis 第一天mybatis的基础知识课程安排:mybatis和springmvc通过订单商品案例驱动第一天:基础知识(重点,内容量多)对原生态jdbc程序(单独使用jdbc开发)问题总结mybatis框架原理(掌握)mybatis入门程序用户的增、删、改、查)mybatis开发dao两种方法:原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握)mybaits的mapper接口(相当于dao接口)代理开发方法(掌握)mybatis配置文件mybatis核心:mybatis输入映射(掌握)mybatis输出映射(掌握)mybatis的动态sql(掌握)第二天:高级知识}订单商品数据模型分析高级结果集映射(一对一、一对多、多对多)mybatis延迟加载mybatis查询缓存(一级缓存、二级缓存)mybatis逆向工程1对原生态jdbc程序中问题总结1.1.1.2环境java环境::indigomysql:1.3创建mysql数据导入下边的脚本::记录表结构:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本.1.4j dbc程序创建java工程,加入jar包:数据库驱动包()上边的是mysql驱动。
]下边的是oracle的驱动。
程序代码:1.5问题总结1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
设想:使用数据库连接池管理数据库连接。
¥2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。
设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。
3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。
设想:将sql语句及占位符号和参数全部配置在xml中。
4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。
mybatis第一天课堂笔记资料讲解

m y b a t i s第一天课堂笔记mybatis 第一天 mybatis的基础知识课程安排:mybatis和springmvc通过订单商品案例驱动第一天:基础知识(重点,内容量多)对原生态jdbc程序(单独使用jdbc开发)问题总结mybatis框架原理(掌握)mybatis入门程序用户的增、删、改、查mybatis开发dao两种方法:原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握)mybaits的mapper接口(相当于dao接口)代理开发方法(掌握)mybatis配置文件SqlMapConfig.xmlmybatis核心:mybatis输入映射(掌握)mybatis输出映射(掌握)mybatis的动态sql(掌握)第二天:高级知识订单商品数据模型分析高级结果集映射(一对一、一对多、多对多)mybatis延迟加载mybatis查询缓存(一级缓存、二级缓存)mybaits和spring进行整合(掌握)mybatis逆向工程1对原生态jdbc程序中问题总结1.1环境java环境:jdk1.7.0_72eclipse:indigomysql:5.11.2创建mysql数据导入下边的脚本:sql_table.sql:记录表结构sql_data.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本1.3jdbc程序使用jdbc查询mysql数据库中用户表的记录。
创建java工程,加入jar包:数据库驱动包(mysql5.1)上边的是mysql驱动。
下边的是oracle的驱动。
程序代码:1.4问题总结1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
设想:使用数据库连接池管理数据库连接。
2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。
设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
day01 mybatis入门
课程计划:orm --- jdbc封装
1、原生jdbc开发问题的总结
2、mybatis的介绍和原理
3、mybatis的入门程序(CRUD)
4、mybatis两种dao的开发方式
5、mybatis的全局配置文件
1原生jdbc开发的问题总结1.1准备条件
1.1.1导入jar
数据库驱动包
1.1.2数据
执行sql脚本。
1.2编码
1.3jdbc开发存在的问题
1、数据库连接的频繁获取与释放--→造成数据库吞吐量过大--→降低数据的性能--→从而降
低了APP的性能;
2、结果集的不易处理;
3、传递的参数类型比较单一
4、硬编码问题--- 程序不灵活
●查询条件
●查询条件的值
●显示的列
●sql语句
1.4解决问题
1、通过数据库连接池:c3p0、dbcp、druid(阿里)
2、手动处理
3、手动处理
4、硬编码---抽取出来-→数据的表维护、xml维护sql语句----解析xml并执行其中sql语句-
-- mybatis可以完成这个操作。
orm框架-→jdbc封装--→简化了我们开发(面向对象)
2mybatis的介绍和框架原理
2.1介绍
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。
iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
2.2hibernate框架原理
执行流程:***.hbm.xml(映射文件)
-→hibernate.cfg.xml(全局配置文件)
-→configuration加载全局配置文件
-→会话工厂(SessionFactory)
--→会话(session)--
→有了一切(API的调用,注意:如果是增、删、改:开始事务并且提交事务)。
orm框架:数据的表-----pojo相互映射。
2.3mybatis的框架原理
mybatis:也是orm框架
执行流程:映射文件(编写sql语句)
--→全局配置文件(加载映射文件、配置延迟加载)
--→SqlSessionFactoryBuilder(加载全局配置文件)
--→SqlSessionFactory(会话工厂)
-→SqlSession(会话)
----API调用(注意:增、删、改需要提交事务。
)3mybatis入门程序
3.1需求
1、根据id查询用户信息
2、根据username模糊查询用户信息
3、添加用户
4、修改用户
5、删除用户
3.2准备工作
3.2.1导入jar
3.2.2编写全局配置文件
3.2.3编写日志文件
3.3根据id查询用户信息3.3.1分析
1、查询条件----id
2、返回结果---object----user
3.3.2创建user对象
3.3.3编写映射文件
3.3.4加载映射文件
3.3.5编码测试
3.4根据username模糊查询用户信息3.
4.1编写映射文件
3.4.2编写测试代码
3.4.3sql注入
3.5添加用户
3.5.1编写映射文件
3.5.2编写测试代码
3.5.3mysql数据库引擎
分配自增id的策略:先分配,后使用。
不管之前的操作是否成功或失败,分配的id不会回收(回滚。
)
3.6获取返回自增主键的id
3.6.1使用场景
3.6.2编写映射文件
3.6.3编写测试代码
3.6.4使用uuid SELECT UUID()执行该条sql。
3.7根据id修改用户3.7.1编写映射文件
3.7.2编写测试代码
3.8根据id删除用户3.8.1编写映射文件
3.8.2编写测试代码
4mybatis的两种dao的开发方式4.1三个对象
4.1.1SqlSessionFactoryBuilder
作用:加载mybatis的全局配置文件-- 获取会话工厂
使用范围:作为局部变量使用。
相当于工巨类
4.1.2SqlSessionFactory
作用:生成会话
使用范围:只存在一份该对象的实例----可以通过单例来维护该对象4.1.3SqlSession
作用:操作API
使用范围:作为局部变量是使用
sqlsession的创建过程:
4.2传统dao的开发4.2.1步骤
编写接口、实现类
4.2.2编写接口
4.2.3编写实现类
4.2.4编码测试
4.3通过mapper代理开发dao 4.3.1步骤以及规范
1、只需要编写接口
2、namespace:接口的全类路径名称
3、id:必须与接口的方法名保持一致
4、接口方法的参数类型必须与映射文件保持一致
5、接口方法的返回值类型必须与映射文件保持一致4.3.2编写接口
4.3.3编写映射文件
4.3.4加载到全局配置文件中
4.3.5编码测试
4.3.6使用的是哪种代理---jdk代理
1、jdk代理:面向接口,称为动态代理
2、cglib代理:面向实体类,称为静态代理
5mybatis的全局配置文件
5.1标签
properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers? ?:代表0个或者一个
*:代表0个或者多个
大部分情况这些标签都是有顺序的。
5.2properties
作用:加载外部资源文件
注意:
5.3typeAliases 作用:设置别名
5.3.1单个别名的设置
5.3.2批量别名的设置
5.3.3默认支持的别名
5.4mappers
作用:加载映射文件
5.4.1单个映射文件的加载
5.4.2通过接口加载单个映射文件----了解
规范:
1、接口名与映射文件名称必须一致
2、接口和映射文件在同一目录下
5.4.3批量映射文件的加载。