1.mybatis框架简介:
持久层ORM框架,将实体类和sql语句的一种映射关系,半自动化的ORM实现。
对sql语句解耦合(封装在配置文件中,进行统一管理)
基于sql语句,简单易测试。
(2)要素:全局配置文件
映射文件
(3)架构:基础层:连接管理、事务管理、一、二级缓存、延时加载
数据处理层:sql解析,sql执行,结果映射,完成数据库操作
API接口层:提供增删改查的接口
(4)工作流程: 加载配置文件、初始化
接受请求
处理请求
返回结果
2.入门程序:
(1)创建工程,导包
(2)全局配置文件 :数据源,环境,映射文件
(3)配置映射文件:
(4)测试
//全局配置文件sqlMappConfig.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">
<configuration>
<!-- 加载属性文件 -->
<properties resource="jdbcConfig.properties"></properties>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务控制由mybatis-->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybatis管理-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!-- 加载 映射文件 -->
<mappers>
<mapper resource="sqlmapper/User.xml"/>
</mappers>
</configuration>
//映射文件User.xml
<?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">
<mapper namespace="tt" >
<select id="getUserById" parameterType="int" resultType="com.edu.pojos.User">
select * from user where uid=#{uid}
</select>
<select id="getUserByName" parameterType="java.lang.String" resultType="com.edu.pojos.User">
select * from user where username like '%${value}%'
</select>
<insert id="addUser" parameterType="com.edu.pojos.User" >
insert into user(username,password,age) values(#{username},#{password},#{age})
</insert>
<update id="udateUser" parameterType="com.edu.pojos.User">
update user set username=#{username},password=#{password},age=#{age} where uid=#{uid}
</update>
<delete id="delUser" parameterType="int">
delete from user where uid=#{uid}
</delete>
</mapper>
//测试类
public class Test {
public static void main(String[] args) throws IOException {
//获取全局配置文件输入流
//InputStream in=Test.class.getClassLoader().getResourceAsStream("sqlMappingConfig.xml");
InputStream in=Resources.getResourceAsStream("sqlMappingConfig.xml");
//获取sqlsessionFactory对象
SqlSessionFactory fac=new SqlSessionFactoryBuilder().build(in);
//获取sqlSesion接口()
SqlSession session=fac.openSession();
/*User user=session.selectOne("tt.getUserById", 9);
System.out.println(user);*/
/*
List<User> list=session.selectList("tt.getUserByName", "w");
System.out.println(list);*/
//添加用户
/* User user=new User();
user.setUsername("李四");
user.setPassword("hello");
user.setAge(18);
int res=session.insert("tt.addUser", user); //返回值受影响行数
System.out.println(res);*/
//修改用户
/* User user =new User();
user.setUid(9);
user.setUsername("星期五");
user.setPassword("friday");
user.setAge(23);
int res=session.update("tt.udateUser", user);
System.out.println(res);*/
//删除用户
int res=session.delete("tt.delUser", 39);
System.out.println(res);
session.commit();//注意:增删改操作必须手动提交
session.close();
}
}