0,准备mysql-connector.jar、mybatis.jar
1,conf.xml(数据库配置信息、映射文件)
2,表---类:映射文件 mapper.xml
3,测试类
一,基础方式的增删改查CRUD
mybatis约定:
输入参数parameterType和输出参数resultType在形式是都只能有一个
(但可以使用数组等方式表达多个)
如果输入/输出参数:是简单类型(8个基本类型+String)是可以使用任何占位符#{xxx}
如果是对象类型,则必须是对象的属性 #{属性名}
输出参数:如果返回值类型是一个对象(如Student),则无论返回一个、还是多个
在resultType都写成:
注意事项:
a,如果使用的事务为jdbc,则需要手工commit提交,即session.commit()
b,所以的标签<select><update>等,都必须有sql语句,但sql语句参数值可选。
sql有参数:session.insert(statement,参数值);
sql无参数:session.insert(statement);
二,mapper动态代理的CRUD(Mybatis接口开发):
原则:约定优于配置
进化过程:
硬编码:abc.java
Configuration conf = new Configuration();
conf.setName("myProject");
配置方式:
abc.xml
<name>myProject</name>
约定:默认值就是myProject
具体实现的步骤:
1,基础环境:mybatis.jar / ojdbc.jar、conf.xml、mapper.xml
2,(不同之处)
约定的目标:省略掉statement,根据约定直接定位出statement
a,接口
接口中的方法必须遵循以下的约定:
1,方法名和mapper.xml文件中标签的id值相同
2,方法的输入参数与mapper.xml文件中标签的parameterType类型一致
(如果mapper.xml的标签中没有parameterType,则说明该方法没有输入参数)
3,方法的返回值和mapper.xml文件中标签的resultType类型一致
(mapper.xml标签中的查询结果无论是一个还是多个,在mapper.xml标签中的resultType中只写一个(Student))
除了以上约定,要实现接口中的方法和Mapper.xml中SQL标签一一对应
,还需要以下2点:
1,namespace的值,就是接口的全类名(接口--mapper.xml 一一对应)
匹配的过程:(约定的过程)
1,根据接口名找到mapper.xml文件(根据的是namespace=接口全类名)
2,根据接口的方法名找到mapper.xml文件中的SQL标签(方法名=SQL标签Id值)
以上2点可以保证:当我们调用接口中的方法时,程序能自动定位到某一个Mapper.xml
文件中的sql标签。
习惯上:SQL映射文件(mapper.xml)和接口放在同一个包中(注意修改conf.xml中加载mapper.xml的路径)
以上,可以通过接口的方法->SQL语句
StudentMapper studentMapper=session.getMapper(StudentMapper.class);
studentMapper.方法();
通过session对象获取接口(session.Mapper(接口.class)),再调用该接口中的方法,程序会自动执行该方法对应的SQL;
优化:
1,可以将配置信息单独放入db.properties文件中,然后再动态引入
db.propertier:
k-v
<configuration>
<properties resource="db.properties"/>
引入之后,使用${key}
2,Mybatis全局参数:
在configuration设置
3,别名
a,设置单个别名
除了自定义别名外,Mybatis还内置了一些常见类的别名。
类型处理器(类型转换器)
1,Mybatis自带一些常见的类型处理器
int number
2,自定义Mybatis类型处理器
java--数据库(jdbc类型)
示例:
实体类Student:boolean stuSex
true:男
false:女
```