生成配置文件
mybatis.xml
<?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">
<!--default 默认连接 -->
<environments default="development">
<environment id="development">
<!-- 使用原生JDBC事务-->
<transactionManager type="JDBC"/>
<!-- 使用连接池-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
添加dtd文件
http://mybatis.org/dtd/mybatis-3-config.dtd
配置映射文件Mapper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 实现类的全路径-->
<mapper namespace="org.mybatis.example.BlogMapper">
<!-- id为方法名,
parameterType 参数类型
resultType 返回值类型
如果返回值为List resultTye 写List 的泛型
-- >
<select id="selectBlog" parameterType="int" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
InputStream is = Resources.getResourceAsStream("");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
List<Object> selectList = session.selectList("");
session.close();
环境配置详解
<transactionManager type=""/>
- jdbc 原生事务
- MANAGED 把事务管理交给其他容器
<dataSource type="POOLED">
- UNPOOLED 不适用数据库连接池
- POOLED 使用数据库连接池 提高系统运行效率
- JNDI java命名接口技术
tomcat配置数据库连接
在web项目中META-INF中添加context.xml文件
在context.xml
文件中添加配置信息
<?xml version="1.0" encoding="UTF-8"?>
<context>
<Resource
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/ssm"
username="root"
password="root@123"
maxAtive="50"
maxIdle="20"
name="test"
auth="Container"
maxWait="10000"
type="javax.sql.DataSource"
/>
</context>
InitialContext context = new InitialContext();
DataSource ds = (DataSource) context.lookup(""
settings 标签配置
Mybatis 接口配置
- mybatis.xml
- mapper.xml
- Interface
- mapper = session.getMapper();
- mapper.id();
在接口中实现多参数
- 在接口中声明方法
- 用注解@Param
动态SQl
<if> 标签
<where> 标签 去掉第一个AND
<choose> <when> <otherwise> 其中一个成立,其他不执行
< set > 在修改SQL中set动态拼接 去掉最后一个逗号
<trim> 增加 一个单词 去掉一个
< bind> 重新赋值
<foreach> 适用于in 批量新增
< include > refid属性
缓存
<mapper namespace="">
<!--开启缓存 不写readOnly 需要将bean 序列化-->
<cache readOnly="true"></cache>
<select id="" ></select>
</mapper>
SqlSessionFactory缓存
二级缓存
当数据频繁被查询,很少被修改 时候使用
有效范围=是同一个factory 内SQLSession都可以访问
sqlSession对象close 或commit时候 会将数据flush 到缓存中