目录
框架
框架的概念
框架,就是软件的半成品,完成了软件开发过程中的通用操作,程序员只需很少或者不用进行加工就能够实现特定的功能,从而简化开发人员在软件开发中的步骤,提高开发效率。
常用的框架
MVC框架:简化了Servlet的开发步骤
- Struts2
- SpringMVC
·持久层框架:完成数据库操作的框架
- apache DBUtils
- Hibernateo(全自动)
- Spring JPA
- MyBatis.
胶水框架: Spring
SSM的全称Spring SpringMVC MyBatis
SSH的全称Spring Struts2 Hibernate
MyBatis基础
MyBatis简介
MyBatis是一个半自动的ORM框架
ORM(Object Relational Mapping)对象关系映射,将Java中的一个对象与数据表中一行记录一一对应。
ORM框架提供了实体类与数据表的映射关系,通过映射文件的配置,实现对象的持久化。
MyBatis的发展
MyBatis的前身是iBatis,iBatis是Apache软件基金会提供的一个开源项目。
2010年iBatis迁移到Google code,正式更名为MvBatis
2013年迁移到GitHub
MyBatis的特点
- 支持自定义SQL、存储过程
- 对原有的JDBC进行了封装,几乎消除了所有JDBC代码,让开发者只需关
- SQL本身支持XML和注解配置方式自定完成QRM操作,实现结果映射
JDBC和MyBatis对比
JDBC
- SQL夹杂在Java代码中耦合度高,导致硬编码内伤
- 维护不易且实际开发需求中SQL有变化,频繁修改的情况多见
- 代码冗长,开发效率低
MyBatis
- 轻量级,性能出色
- SQL和Java编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据。
- 开发效率稍逊于Hlbernate,但是完全能够接受
MyBatis的使用
核心配置文件mybatis-config.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>
<!--配置链接数据库的环境-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/chaper"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<mapper resource="com/qfedu/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
配置文件
<?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接口的全类名-->
<mapper namespace="student">
<select id="findStudentBySid" parameterType="Integer"
resultType="com.qfedu.pojo.Student">
select * from Student where sid = ${sid}
</select>
<select id="findStudentBySname" parameterType="String"
resultType="com.qfedu.pojo.Student">
select * from student where sname like '%${zhangsan}%'
</select>
<insert id="addStudent" parameterType="com.qfedu.pojo.Student">
insert into student(sid,sname,age,course)values(#{sid},#{sname},#{age},#{course})
</insert>
<update id="updateStudent" parameterType="com.qfedu.pojo.Student">
update student set sname=#{sname},course = #{course} where sid = #{sid}
</update>
<delete id="deleteStudent" parameterType="Integer">
delete from student where sid=#{sid}
</delete>
</mapper>
Mapper接口
public interface StudentDao {
// insertStudent和sql语句的id相对于
public int insertStudent(Student student);
}
测试文件
public class TestAdd {
public static void main(String[] args) {
// 加载核心配置文件
InputStream in = Resources.getResourceAsStream( "mybatis-config.xml");
//获取SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//获取SqlSession 对象,SqlSession 是java程序和数据库的对话
//参数为true自动提交事务,下方不需要sqlSession.commit();
SqlSession sqlSession = factory.openSession(true);
//获取Mapper接口的对象
Student student = new Student();
student.setSid(19);
student.setSname("guoxiaoliang");
student.setAge("23");
student.setCourse("C++");
int result = sqlSession.insert("student.addStudent", student);
if (result > 0) {
System.out.println("�ɹ�����" + result + "������");
} else {
System.out.println("�������ʧ��");
}
sqlSession.commit();
sqlSession.close();
}
}