博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis初识(通过小实例清晰认识MyBatis)
阅读量:4673 次
发布时间:2019-06-09

本文共 4910 字,大约阅读时间需要 16 分钟。

1.MyBatis框架:

  MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

2.MyBatis架构:

3.上面的架构图可能难以理解,下面的图示更能清晰明白MyBatis的具体使用流程:

  废话不多说,直接贴工程代码,通过代码解释MyBatis究竟是干嘛的,工程所需要的所有java包都在下面链接中:http://pan.baidu.com/s/1kUZmpWb

4.电影的简单增删改查工程实现:

  (1)建立数据库,建一张电影表film:

  

  (2)在工程中建立电影类Film:

  

public class Film {    // Fields    private Long id;    private String fname;    // Constructors    /** default constructor */    public Film() {    }    // Property accessors    public Long getId() {        return this.id;    }    public void setId(Long id) {        this.id = id;    }    public String getFname() {        return this.fname;    }    public void setFname(String fname) {        this.fname = fname;    }}

  (3)在工程中建立电影信息数据访问接口FilmMapper.java:

  

import java.util.List;import java.util.Map;import com.gnc.pojo.Film;/** * 电影信息数据访问接口 */public interface FilmMapper {    /**      * 功能:查询所有电影      * @return      */      public List
getAllFilm(); /** * 功能:按编号获取电影 * * @return */ public Film getFilmById(int id); /** * 功能:添加影片 * * @param film */ public void insertFilm(Film film); /** * 功能:修改影片 * * @param film */ public void updateFilm(Film film); /** * 功能:删除影片 * * @param id */ public void deleteFilm(int id);}

  (4)建立映射文件FilmMapper.xml

   

insert into film (f_name) values (#{fname});
update film
f_name = #{fname}
where id = #{id}
delete from film where id = #{id}

  (5)建立MyBatis配置文件mybatis-config.xml:

  

  (6)建立测试类TestMyBaties:

  

import java.io.IOException;import java.io.InputStream;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.gnc.dao.FilmMapper;import com.gnc.pojo.Film;import junit.framework.TestCase;public class TestMyBaties extends TestCase {    /**     * 共6步操作完成CRUD     *      * @throws IOException     */    public void testBaties() throws IOException {        // 指定MyBatis配置文件        String RESOURCE = "mybatis-config.xml";        // 1、指定MyBaties配置文件        InputStream inputstream = Resources.getResourceAsStream(RESOURCE);        // 2、创建SqlSessionFactory()        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputstream);        SqlSession session = null;        try {            // 3、获取SqlSession            session = sessionFactory.openSession();            // 4、获取DAO接口对象            FilmMapper mapper = session.getMapper(FilmMapper.class);            // 5、CRUD操作            // 5.1--添加影片            Film film = new Film();            film.setFname("笑傲江湖");            mapper.insertFilm(film);            session.commit();// 添加、修改、删除操作最后需要提交事务            // 5.2--修改影片"笑傲江湖"为"喜剧之王"            film = mapper.getFilmById(1);            film.setFname("喜剧之王");            mapper.updateFilm(film);            session.commit();            // 5.3--删除影片"笑傲江湖",其ID为14//            mapper.deleteFilm(1);//            session.commit();            // 5.4--获取所有电影信息            List
filmList = mapper.getAllFilm(); // 显示所有电影信息 for (Film filmObj : filmList) { System.out.println("电影ID:" + filmObj.getId() + " 电影名:" + filmObj.getFname()); } } catch (Exception e) { e.printStackTrace(); } finally { // 6、关闭SqlSession if (session != null) { session.close(); } } }}

5.工程流程解释:

  首先,电影系统中,我们要先有一个数据库用来存放电影信息,即第一步;然后需要有一个电影类,也就是第二步;接着,需要有一个对电影信息访问控制的接口,即第三步;接下来,我们一般的做法就是再建立一个java类来实现刚才的接口,实现的过程也就是sql操作,采用MyBatis框架,就将这个过程放在了xml映射文件中,即第四步;昨晚上面步骤之后,就需要进行配置MyBatis信息,即第五步,该步包括连接数据库,加载映射文件,以及给实体类取一些别名以便映射文件中简单实用.上述步骤走完之后,就可以进行测试了,测试过程分为三步:第一,加载mybatis-config.xml配置文件,获取SqlSessionFactory;第二,获取session;第三,获取DAO接口对象FilmMapper;然后就可以进行平常的操作了.

 

以上是本人个人观点,如有不对,希望共同交流!

 

转载于:https://www.cnblogs.com/geningchao/p/6628243.html

你可能感兴趣的文章
TeX中的引号
查看>>
Python 模块(module)
查看>>
region实现大纲效果
查看>>
day1
查看>>
[No0000B5]C# 类型基础 值类型和引用类型 及其 对象判等 深入研究1
查看>>
AJAX JSONP源码实现(原理解析)
查看>>
Java 表达式解析(非原创)
查看>>
[洛谷P4234]最小差值生成树
查看>>
LiveNVR传统安防摄像机互联网直播-二次开发相关的API接口
查看>>
LiveNVR高性能稳定RTSP、Onvif探测流媒体服务配置通道接入海康、大华等摄像机进行全终端无插件直播...
查看>>
c c++ sizeof
查看>>
Intellij IDEA连接Spark集群
查看>>
最长回文子串解法
查看>>
代码优化程序性能
查看>>
腾讯实习生招聘笔试题目
查看>>
Java Socket编程----通信是这样炼成的
查看>>
作业要求 20180925-1 每周例行报告
查看>>
1078. Hashing (25)-PAT甲级真题
查看>>
SQLite中的运算符表达式
查看>>
Grid使用 & ComboBox Binding & DateTime Format WPF
查看>>