Mybatis 简介
- Mybatis是一个Apache下的开源项目,后转入谷歌旗下,2013年迁移到github上,他是一个超轻级的半自动ORM框架
- 框架架构
核心就是输入映射 将参数映射到sql语句中(jdbc 中的参数替换)
map list interger pojo(普通的javabeans对象) 和输出映射(JDBC resultset到对象的映射)并且能帮我们管理事务
开发人员只需要关注具体的sql语句(sql语句需要自己写 半自动) - Mybatis和hibernate的区别
mybatis:
1.mybatis需要手写sql语句 使用户变化频繁的场景
2.切换数据库成本较高 通常需要重写sql语句
3.不是一个完全的的orm映射 无法实现面向对象操作数据库
4.体积更小 学习难度低
5.不能自动生成表结构
hibernate:
与数据库的关联性几乎没有随时可连切换几种方言
更加完善的ORM映射 可以不编写sql语句
可以自动生成表 结构 从实体类 映射 关联关系
体积大 学习进程更长
Mybatis配置
1.配置文件的名字尽量使用:SqlMapConfig.xml
文件的头内容:
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
所有标签都写在这对根标签下面
先写配置文件连接写在中
<properties resource="db.properties"></properties>
设置开发环境
<!--当前为开发环境 -->
<environments default="development">
<environment id="development">
<!--事务管理 -->
<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="com/wl/bean/User.xml"/>
<package name="com/wl/dao"/>
</mappers>
映射文件的配置
文件头
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
所有标签都写在这对标签中
测试增删改查数据
- 根据id查询
映射配置
<mapper namespace="test">
<select id="selectIdUser" parameterType="Integer" resultType="com.lanou.bean.User">
select * from User where id=#{id}
</select>
</mapper>
测试类代码
@Test
public void selectIdUser() throws Exception{
//创建构造器
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//获取回话工厂
SqlSessionFactory factory = builder.build(inputStream);
//获取回话
SqlSession session = factory.openSession();
//查询
User res = session.selectOne("test.selectIdUser", 8);
System.out.println(res);
}
2 .添加数据配置
<insert id="insterUser" parameterType="com.lanou.bean.User">
insert into User values(
null,
#{name},
#{address},
#{sex},
#{phone},
#{age}
)
</insert>
测试代码:
public void insterUser() throws Exception{
//创建构造器
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//获取回话工厂
SqlSessionFactory factory = builder.build(inputStream);
//获取回话
SqlSession session = factory.openSession();
//添加数据
User user = new User();
user.setName("大王");
user.setAge(13);
user.setPhone("123456789");
user.setSex("男");
user.setAddress("北京");
int insert = session.insert("test.insterUser", user);
System.out.println(insert);
session.commit();
}
3 .修改数据配置
<update id="updeteUser" parameterType="com.lanou.bean.User">
update User
set name=#{name},
address=#{address},
sex=#{sex},
phone=#{phone},
age=#{age}
where id =#{id}
</update>
测试类代码
@Test
public void updeteUser() throws Exception{
//创建构造器
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//获取回话工厂
SqlSessionFactory factory = builder.build(inputStream);
//获取回话
SqlSession session = factory.openSession();
//修改
User user = new User();
user.setName("张三");
user.setAge(28);
user.setPhone("123459");
user.setSex("男");
user.setAddress("山海");
user.setId(6);
int insert = session.insert("test.updeteUser", user);
System.out.println(insert);
session.commit();
}
4 .删除用户配置
<delete id="deleteUser" parameterType="int">
delete from User where id=#{id}
</delete>
测试代码
@Test
public void deleteUser() throws Exception{
//创建构造器
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//获取回话工厂
SqlSessionFactory factory = builder.build(inputStream);
//获取回话
SqlSession session = factory.openSession();
//查询
int delete = session.delete("test.deleteUser", 4);
System.out.println(delete);
session.commit();
}