框架简介 MyBatis
半自动化的ORM实现
DAO层
动态SQL
小巧灵活、简单易学
持久化和ORM
1.持久化是程序数据在瞬时状态和持久状态间转换的过程
2.ORM(Object Relational Mapping)
编写程序的时候,以面向对象的方式处理数据
保存数据的时候,却以关系型数据库的方式存储
ORM解决方案包含下面四个部分
在持久化对象上执行基本的增、删、改、查操作
对持久化对象提供一种查询语言或者API
对象关系映射工具
提供与事务对象交互、执行检查、延迟加载以及其他优化功能
MyBatis简介
MyBatis前身是iBatis,本是Apache的一个开源的项目
Maven简介
1.maven是一个项目构建和管理的工具,提供了帮助管理构建、文档、报告、依赖、发布、分发的方法。可以方便的编译代码,进行依赖管理,管理二进制库等等。
2.maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性。
3.利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率。实现持续集成等等。
Maven的构建模型:POM 文件
Maven的核心思想都体现在POM文件中了,POM是Project Object Model的缩写,项目对象模型。一个项目的代码、测试代码(比如JUnit测试代码)、资源(比如模板文件和配置文件)、依赖的包等,都是一个项目构建中的关键信息。POM文件就是一个描述这些信息的XML文件,位于项目的根目录下。
首先创建一个目录结构:
搭建MyBatis开发环境
1.依赖的添加;
在pom.xml文件中进行依赖的添加:
标签代码含义
<groupId> 类似于项目所属的组织,所依赖的包也属于某一个组织
<artifactId> 依赖包的名称
<version> 依赖包的版本
编写MyBatis配置文件(Mybatis-config.xml)
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <environments default="development"> 7 <environment id="development"> 8 <transactionManager type="JDBC"/> 9 <dataSource type="POOLED"> 10 <property name="driver" value="${driver}"/> 11 <property name="url" value="${url}"/> 12 <property name="username" value="${username}"/> 13 <property name="password" value="${password}"/> 14 </dataSource> 15 </environment> 16 </environments> 17 <mappers> 18 <mapper resource="org/mybatis/example/BlogMapper.xml"/> 19 </mappers> 20 </configuration>
创建实体类和接口
实体类(UserInfo)
1 public class UserInfo { 2 private Integer id; //用户id 3 private String name; //用户姓名 4 private String sex; //用户性别 5 6 public Integer getId() { 7 return id; 8 } 9 10 public void setId(Integer id) { 11 this.id = id; 12 } 13 14 public String getName() { 15 return name; 16 } 17 18 public void setName(String name) { 19 this.name = name; 20 } 21 22 public String getSex() { 23 return sex; 24 } 25 26 public void setSex(String sex) { 27 this.sex = sex; 28 } 29 }
dao层接口(IUserInfoDao)
public interface IUserInfoDao { /*查询全部用户*/ public List<UserInfo> findall(); /*增加用户*/ public int adduser(UserInfo userInfo); /*修改用户*/ public int edituser(UserInfo userInfo); /*删除用户*/ public int deluser(UserInfo userInfo); }
创建sql映射文件(IUserInfoDao.java)
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="cn.happy.dao.IUserInfoDao"> 6 <select id="findall" resultType="cn.happy.entity.UserInfo"> 7 select * from userinfo 8 </select> 9 <insert id="adduser"> 10 insert into userinfo(name,sex) values(#{name},#{sex}) 11 </insert> 12 <update id="edituser"> 13 update userinfo set name=#{name},sex=#{sex} where id=#{id} 14 </update> 15 <delete id="deluser"> 16 DELETE from userinfo where id=#{id} 17 </delete> 18 </mapper>
编写测试类进行测试:
1 public class Test20170914 { 2 /*查询用户*/ 3 @Test 4 public void testall() throws IOException { 5 String resouce="mybatis-config.xml"; 6 //1.1 将硬盘上一个xml文件变成一个输入流 7 InputStream is= Resources.getResourceAsStream(resouce); 8 //1.2 使用流对象作为参数创建一个会话工厂 9 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); 10 //1.3通过会话工厂创建会话对象 session就是程序员和数据库交互的入口 11 SqlSession session=factory.openSession(); 12 //1.4 调度selectList方法执行sql,并且获取结果 13 IUserInfoDao mapper=session.getMapper(IUserInfoDao.class); 14 List<UserInfo> list=mapper.findall(); 15 16 for (UserInfo user: list){ 17 System.out.println(user.getName()); 18 } 19 //关闭会话,释放资源,提高性能 20 session.close(); 21 }
核心接口和类的结构