安装准备(eclipse环境):
1.mybatisjar包,jdbcjar包导入
2.配置文件,1 Mybatis全局配置文件 不固定, mybatis-config.xml 位置路径:classpath的根路径,参照Mybatis文档
①全局配置信息,②属性配置信息,③插件配置信息,④配置环境信息(连接池+事务)⑤关联映射文件
2 Mybatis映射文件 不固定 xxxMapper.xml 位置路径:Mapper接口路径 参照xml映射文件
①编写增删改查的sql,把sql放入insert/delete/update/select元素中
②结果映射:解决表中的列和对象的属性不匹配的问题。
③缓存配置
Mybatis全局配置文件
新建source文件夹
创建mybatis-config.xml
添加约束
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
自动联网查询,也可以添加本地配置,windows-preference-xml-xml catalog-catalog entry 添加 file system 找到dtd文件 key type修改为uri, key修改为:dtd网址,OK
<configuration> 配置内容</configuration>
配置内容:
配置数据库环境
<environments default="dev"> <!-- 用哪个环境 -->
<environment id="dev">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisdemo"/>
<property name="username" value="root"/>
<property name="password" value="112477"/>
</dataSource>
</environment>
</environments>
关联映射文件
<mappers>
<mapper resource="cn/wolfcod/mybatis/hello/UserMapper.xml" /> 相对于classpath的路径
</mappers>
配置映射文件
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="命名空间">配置内容</mapper>
配置内容:
delete/insert/select/update 元素
元素属性 : Id: 唯一标志一条sql语句,id和mapper 的namesapce表示唯一一条sql语句。
resultType:把结果集中的每一行数据封装成什么类型的对象。
parameterType :执行该sql语句参数的类型(可以自行推断),基本不写
举例:
<!-- 查询部分列 -->
<select id="queryFromap" resultType="map">
select id,name from t_user
</select>
<!-- 查询结果总数 -->
<select id="queryForCount" resultType="_int">
select count(id) from t_user
</select>
<select id="get" resultType="user">
select id,name,salary from t_user where id= #{id}
</select>
<select id="listAll" resultType="user">
select id,name,salary from t_user
</select>
<update id="update">
update t_user set name=#{name},salary=#{salary} where id =#{id}
</update>
<delete id="delete" >
delete from t_user where id=#{id}
</delete>
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into t_user(name,salary) values(#{name},#{salary})
</insert>
SqlSessionFactoryBuilder:根据配置信息,用来创建SqlSessionFactory。
SqlSessionFactory :会话工厂,好比使用DataSource对象,目的:创建SqlSession对象。
SqlSession:会话,不是HttpSession,好比是Connection对象,该接口提供了增删改查的方法,和Connection一样,是线程不安全的,每次使用都应该开启一个新的SqlSession对象,不能作为成员变量,用完之后必须正常关闭资源。
private static SqlSessionFactory factory=null;
static {
try {
factory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return factory.openSession();
}