MyBatis基本使用
1.导入jar包
先导mysql的jar包
再导mybatis3.4.1版(以3.4版为标准)
包含了所有的api
2.创建核心配置xml文件
XML配置文件包含Mybatis系统的核心设置
doctype不可以更改,复制即可
根元素 :<configuration>
以下标签位置顺序不能搞反!!!
1.<properties resource="db.properties">
其中可以用<propertiy>
<!-- 引入外部的文件,加载到当前的配置 -->
2.<settings>
<setting>
3.<typeAlaises>
给类起类别名
<typeAlias alias="UserBean" type="com.project.bean.UserBean"/>
<package name="包名">
设置当前包下面所有类,别名用类名来命名
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
配置事务管理器
<dataSource type="POOLED">
其中用<propertiy>
设置如:驱动地址、连接url/用户名/密码 等
POOLED:开启数据池,提高效率
添加<mappers>标签
添加上 映射xml 的配置信息
默认使用default匹配的id配置数据库
3.创建映射的xml文件
包含的根元素:<mapper>
<mapper namespace="com.project.mapper.UserMapper">
命名空间namespace
要唯一
规范:包名加上文件名
其中定义sql语句标签
select等标签
必须给一个不重复id属性,可以用来引用这条语句
parameterType属性
"int" "String"等,
如果是自定义对象,要写类全名,同时形参要写成对象的属性名,不可任意取
注意是java中的类型,不是数据库的类型
parameterMap属性
指多个参数,参数为键值对集合
=“getMap”
下面需要添加一个<parameterMap id ="getMap">标签
使用时 #{键}即可得到值
resultType属性
包名.bean类名
只有select类型标签有此属性
resultMap属性
="resMap"
其中定义对应的sql语句
select * from t_stu where pk_id = #{stuid}
{}中任意形参名任意取
配置返回对象的属性
(上面有resultMap属性的标签)下面需要添加一个<resultMap id= "resMap" type="UserBean">标签
<id properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
……
<association property="对象变量名" javaType="对象类型"
(也可以在这里在设置一个resultMap="xxMap"属性,将
处理权交给另一个<resultMap id="xxMap" type="xxBean">标签)
>
<id properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
<colletion property="集合变量名" ofType="内置对象类型"
(也可以在这里在设置一个resultMap="xxMap"属性,将
处理权交给另一个<resultMap id="xxMap" type="xxBean">标签)
>
<id properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
<result properties = "bean中属性名" column="数据库中对应字段名">
返回对象的基本类型属性 (id 要用id标签,其他用result标签)
返回对象的属性为一个对象,用<association>标签包围
注意:对象类型 属性名为javaType
其中不能在嵌套<association>标签!!!
注意:内置对象类型 属性名为ofType
如果需要再装入一个集合,需要用resultMap的方式,在<resultMap>中加<colletion>
将本xml文件配置到 核心配置文件xml中
java没有提供任何方法
4.(从核心配置XML中)构建SqlSessionFactory对象
对象特点
核心对象!
主要用来读xml文件
每个数据库对应一个该对象
获取后相当于加载驱动、获取连接已经完成
构建方式
通过xml(已经创建的)
不通过xml
5.从SqlSessionFactory中获取SqlSession
特点
每个该对象代表一个连接对象
语法(在java代码中)
//读取配置文件
String res = "conf.xml";
InputStream in =null;
try {
in = Resources.getResourceAsStream(res);
产生工厂类对象:
SqlSessionFactory sqlSessionFactory
= new SqlSessionFactoryBuilder().build(in) ;
build()方法可传参来选择环境
参1:输入流
参2: 环境
填入 配置文件中对应<environment>的id值
用于指定使用哪一个数据库
此参可以不填,默认为配置文件中的default
产生SqlSession对象:
SqlSession session = sqlSessionFactory.openSession();
若传布尔参,可以控制是否自动提交
可以将此部分代码封装到一个工具类中,只需要按需产生SqlSession即可
6.调用SqlSession的方法 执行(映射xml中的)sql语句
查询
UserBean ub = session.selsectOne("命名空间.id值",参数);
List<UserBean> userList = session.selsectList("命名空间.id值",参数);
注意:sql语句标签返回值仍然是com.project.bean.UserBean
而不是java.util.List。
调用selsectList()方法后 会自动返回List
增
.inset("命名空间.id值",参数);
删
.delete("命名空间.id值",参数);
改
.update("命名空间.id值",参数);
要手动提交sesison.commit();可以在获取时设置是否自动提交
select 类型语句无需提交
7.关闭SqlSession对象
session.close();