一、环境搭建:
1.导入jar包
2. 在src 下新建全局配置文件(编写JDBC 四个变量)
2.1 没有名称和地址要求
2.2 在全局配置文件中引入DTD 或schema
2.2.1 如果导入dtd 后没有提示
Window--> preference --> XML --> XMl catalog --> add 按钮
2.2.2 全局配置文件内容
二. 新建以mapper 结尾的包,在包下新建:实体类名+Mapper.xml
1.文件作用:编写需要执行的SQL 命令
2.把xml 文件理解成实现类.
3.xml 文件内容
select * from people
4. 测试结果(只有在单独使用mybatis 时使用,最后ssm 整合时下面代码不需要编写.)
InputStream is = Resources.getResourceAsStream("myabtis.xml");
//使用工厂设计模式
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//生产SqlSession
SqlSession session=factory.openSession();
List
list = session.selectList("a.b.selAll"); for (People people : list) {
System.out.println(people.toString());
}
session.close();
三.实现JDBC tomcat Pool 的步骤
1.在web 项目的META-INF 中存放context.xml,在context.xml 编写数据库连接池相关属性
maxActive="50" maxIdle="20" name="test" auth="Container" maxWait="10000" type="javax.sql.DataSource" />
2.把项目发布到tomcat 中,数据库连接池产生了
四.可以在java 中使用jndi 获取数据库连接池中对象
1. Context:上下文接口.context.xml 文件对象类型
2 代码:
Context cxt = new InitialContext();
DataSource ds = (DataSource) cxt.lookup("java:comp/env/test");
Connection conn = ds.getConnection();
3 当关闭连接对象时,把连接对象归还给数据库连接池,把状态改变成Idle
五.三种查询方式
1.selectList() 返回值为List
1.1 适用于查询结果都需要遍历的需求
2.selectOne() 返回值Object
2.1 适用于返回结果只是变量或一行数据时
3.selectMap() 返回值Map
3.1 适用于需要在查询结果中通过某列的值取到这行数据的需求.
3.2 Map
六.标签 设置log4j
1.在mybatis 全局配置文件中通过
2.在mybatis.xml 中开启log4j
2.1 必须保证有log4j.jar
2.2 在src 下有log4j.properties
3.log4j 中可以输出指定内容的日志(控制某个局部内容的日志级别)
3.1 命名级别(包级别):
例如:namespace=”com.xxx.mapper.PeopleMapper” 其中包级别为com.xxx.mapper ,需要在log4j.propeties 中
3.1.1 先在总体级别调成Error 不输出无用信息
3.1.2 在设置某个指定位置级别为DEBUG
3.2 类级别
3.2.1 namespace 属性值,namespace 类名
3.3 方法级别
3.3.2 使用namespace 属性值+标签id 属性值
七.parameterType 属性
1. 在XXXMapper.xml 中
2. SqlSession 的selectList()和selectOne()的第二个参数和selectMap()的第三个参数都表示方法的参数.
2.1在Mapper.xml 中可以通过#{}获取参数
2.1.1使用索引,从0 开始#{0}表示第一个参数
2.1.2也可以使用#{param1}第一个参数
2.1.3如果只有一个参数(基本数据类型或String),mybatis对#{}里面内容没有要求只要写内容即
2.1.4如果参数是对象#{属性名}
2.1.5如果参数是map 写成#{key}
select * from people where id=#{0}
3.#{} 和${} 的区别
3.1. #{} 获取参数的内容支持索引获取,param1 获取指定位置参数,并且SQL 使用?占位符
3.2. ${} 字符串拼接不使用?,默认找${内容}内容的get/set 方法,如果写数字,就是一个数字
4.如果在xml 文件中出现“<” , “>” ,双引号等特殊字符时可以使用XML 文件转义标签(XML 自身的)
4.1
5. mybatis 中实现mysql 分页写法
5.1 ?不允许在关键字前后进行数学运算,需要在代码中计算完成后传递到mapper.xml 中
5.2 在java 代码中计算
//显示几个
int pageSize = 2;
//第几页
int pageNumber = 2;
//如果希望传递多个参数,可以使用对象或map
Map
map = new HashMap<>(); map.put("pageSize", pageSize);
map.put("pageStart", pageSize*(pageNumber-1));
List
p = session.selectList("a.b.page",map);
5.3 在mapper.xml 中代码
select * from people limit #{pageStart},#{pageSize}
八.typeAliases 别名
1.系统内置别名: 把类型全小写
2.给某个类起别名
2.1 alias=”自定义”
2.2 mapper.xml 中peo 引用People 类
select * from people limit #{pageStart},#{pageSize}
3.直接给某个包下所有类起别名,别名为类名,不区分大小写
3.1 mybatis.xml 中配置
3.2 mapper.xml 中通过类名引用
select * from people limit #{pageStart},#{pageSize}