一览表
MyBatis的配置文件包含了影响MyBatis行为的信息
顶层configuration 配置
properties属性
settings设置
typeAliases类型命名
typeHandlers类型处理器
objectFactory对象工厂
plugins插件
environments环境
environment环境变量
transactionManager事务管理器
dataSource数据源
databaseIdProvider数据库厂商标识
mappers映射器
基础配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 配置文件的根元素 -->
<configuration>
<!-- 属性:定义配置外在化 -->
<properties></properties>
<!-- 设置:定义mybatis的一些全局性设置 -->
<settings>
<!-- 具体的参数名和参数值 -->
<setting name="" value=""/>
</settings>
<!-- 类型名称:为一些类定义别名 -->
<typeAliases></typeAliases>
<!-- 类型处理器:定义Java类型与数据库中的数据类型之间的转换关系 -->
<typeHandlers></typeHandlers>
<!-- 对象工厂 -->
<objectFactory type=""></objectFactory>
<!-- 插件:mybatis的插件,插件可以修改mybatis的内部运行规则 -->
<plugins>
<plugin interceptor=""></plugin>
</plugins>
<!-- 环境:配置mybatis的环境 -->
<environments default="">
<!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
<environment id="">
<!-- 事务管理器 -->
<transactionManager type=""></transactionManager>
<!-- 数据源 -->
<dataSource type=""></dataSource>
</environment>
</environments>
<!-- 数据库厂商标识 -->
<databaseIdProvider type=""></databaseIdProvider>
<!-- 映射器:指定映射文件或者映射类 -->
<mappers></mappers>
</configuration>
基础配置指北
parameterType和resultType这两个属性值确定方式:
1.parameterType根据接口中的形参名来判定的
2.resultType根据接口中的返回值类型
begin:eg
public List<Product> getProductAll(Integer id)
在xml中配置的内容:
<!-- 这里假定我们已经在mybatis-config.xml中给实体类配置了别名,配置方法:
<typeAliases>
//此类方法是将实体类所有类都以首字母小写,作为别名
<package name="com.aj.entity"></package>
</typeAliases>
-->
<select id="getProductAll" resultType ="product>
select * from product
</select>
end:eg
@Param属性作用:
当接口中传了很多的参数,如果不加@Param属性,那么有可能在传参的时候,顺序位置不对,导致sql不能执行.所以需要进行属性转化.
在前台使用Mybatis框架中可能遇到的错误类型:
1-接口中
1.方法的重名
2.创建List集合,对应的类没有导入
3.方法重载的情况
2-接口实现类中
1.对应的mapper中的namespace属性是不是对应的接口实现类的全类名
2.id值是否和接口方法名对应,是否是对应的resultType值或者parameterType值
3.mybatis定义方法的时候,该怎么确定用什么值来接收呢?
insert delete update返回受影响的行数,所以需要定义int类型的返回值
select 返回的是一个数组所以需要List集合接收
4.sql语句:limit
limit n,m
意思就是limit n+1条开始检索 检索共m条
3-转发界面对应的servlet类
1.为了从数据库获取的值不乱码:
建议:加上两条语句
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
2.不要忘记引入对应的MyBatisUtil中的getMapper方法.
begin:eg
ProductMapper pDao=MyBatisUtil.getMapper(ProductMapper.class)
end:eg
3.request.setAttribute(“键”,“值”) 接收的时候一定不要忘了.
4.转发界面的要确定下,你要转发的界面是不是会被其他jsp页面引入的页面
是:后面的forward(request,response)
不是: include(request,response)
4-jsp页面
1.引入包的时候,在head中加入
相当于中的 css前面的检索地址.
2.如果一个jsp页面的一个位置需要引入其他页面:则需要在此处添加语句:
转发的相应位置:写jsp标签:<jsp:include page="/别名"></jsp:include>
3.在封装的头部和尾部中的servlet中,不要关闭输出流,最好就不写输出流了,否则会报streamException不需要写这段语句:[
PrintWriter out = response.getWriter();
out.flush();
out.close();
]
4.jsp页面上方,应该一定不要忘了修改编码方式和导入实体类
5.jsp中EL:表达式的forEach
EL表达式中的begin 和end可以确定字段截取,当不写end的时候,可以遍历出begin开始后的所有