您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页MyBatis详细实例操作

MyBatis详细实例操作

来源:飒榕旅游知识分享网
MyBatis 九步详细实例操作

MyBatis 一种优秀的O/R mapping框架 , 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索 。

MyBatis和Hibernate 对比:

1. MyBatis 非常简单易学,Hibernate相对较复杂,门槛较高。

2. 二者都是比较优秀的开源产品

3. 当系统属于二次开发,无法对数据库结构做到控制和修改,那MyBatis 的灵活性将比Hibernate更适合

4. 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下MyBatis 会有更好的可控性和表现。

5. MyBatis 需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。同样的需求,MyBatis 的工作量比 Hibernate要大很多。类似的,如果涉及到数据库字段的修改,Hibernate修改的地方很少,而MyBatis 要把那些sql mapping的地方一一修改。 6. 以数据库字段一一对应映射得到的PO和Hibernte这种对象化映射得到的PO是截然不同的,本质区别在于这种

PO是扁平化的,不像Hibernate映射的PO是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路。

7. 当然因为HQL 和SQL 查询的问题 性能上MyBatis 很明显就比 Hibernate要快。

OK 看了上面这么的多 那么到底MyBatis怎么实现呢。下面就让我们一起走进MyBatis的大门吧。

第一步:做好准备工作

首先我们要到MyBatis官网下载MyBatis 开发包 http://www.mybatis.org/ 我下面例子用的事3.1.1的版本 :有了开发包 我们可以继续往下走了哦。

第二步:创建工程、配置开发环境

1:解压刚才下走的ZIP包

在这个文件里面我就不一个个介绍了。

2:打开你的开发工具:我这里用的是MyEclipse9.0

2.1创建工程jibatis

2.2 向工程导入所需要的包

这里导入的就是上面1所解压的jar包

注意: 导入的jar包中还有一个mysql-connector-java-5.0.4-bin.jar 这个 jar包 这个文件是mysql驱动的jar包 我这里用到的数据库是 mysql。

OK 到这里 你就基本上创建好一个项目了 而且是支持MyBatis的项目。第三步开始 我们就进入到编码过程

第三步:数据源配置

在项目中创建com.ibatis包(这里为了项目进行方便所有类或xml文件都放在这一个包下)

在com.ibatis创建sqlmap-config.xml

sqlmap-config.xml主要是用来配置数据源代码如下: PUBLIC \"-//ibatis.apache.org//DTD Config 3.0//EN\" \"http://ibatis.apache.org/dtd/ibatis-3-config.dtd\">

value=\"jdbc:mysql://localhost:3306/lifesense?characterEncoding =UTF-8\"/>

到这里第三步完成。下面我们继续往下走吧。

第四步:配置映射xml(TestSql.xml)

在com.ibatis创建TestSql.xml

恭喜您来到第四步 第四部很简单 ,如果学过Hibernate都知道 Hibernate都有一个映射文件 ,为什么要有这个文件 那是为了 实现面向对象 而要实现的 。具体代码如下:

PUBLIC \"-//ibatis.apache.org//DTD Mapper 3.0//EN\" \"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd\">

insert into test (id,name,createtime,email,tilepath,lastloginip,lastlogintime,nickname,password,picture,sessionid,sex,tel,username) values

(#{id},#{name},#{createtime},#{email},#{tilepath},#{lastloginip},#{lastlogintime},#{nickname},#{password},#{picture},#{sessionid},#{sex},#{tel},#{username})

在上面代码中 您可以适当减少字段 这样会快点配置完成。 OK 第四步完成。

那么 到这里 所有要配置的文件基本都配置完了 下面就是我们要实现 Bean的 时候了 。

第五步:model (bean) 类(Test.java)

在com.ibatis创建Test.java

那么这个类没有什么好说的 就是一些字段属性 之后完成get set方法 就OK 了

不过还是贴出代码 方面朋友们查看:

public class Test implements Serializable {

private static final long serialVersionUID -2478236396012275225L;

private String id;

//用户�?

private String username;

=

//密码

private String password;

//姓名

private String name;

// 昵称

private String nickname;

// 性别 可�?�?1 为男�?�? 女�? private String sex; //用户头像图片

private String picture;

//创建时间

private String createtime;

//上次登录时间

private String lastlogintime;

private String tilepath;

public String getTilepath() { return tilepath; }

public void setTilepath(String tilepath) { this.tilepath = tilepath; }

//上次登录IP

private String lastloginip;

//当前会话ID

private String sessionid;

//联系电话

private String tel;

//邮箱

private String email;

public String getId() { return id; }

public void setId(String id) { this.id = id; }

public String getUsername() { return username; }

public void setUsername(String username) { this.username = username; }

public String getPassword() { return password; }

public void setPassword(String password) { this.password = password; }

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public String getSex() { return sex; }

public void setSex(String sex) { this.sex = sex; } /**

获取用户头像URL

@return 用户头像URL

* * */

public String getPicture() { return picture; }

/** * 设置用户头像URL

* @param picture 用户头像URL */

public void setPicture(String picture) { this.picture = picture; }

public String getLastLoginIp() { return lastloginip; }

public void setLastLoginIp(String lastloginip) { this.lastloginip = lastloginip; }

public String getSessionid() { return sessionid; }

public void setSessionid(String sessionid) { this.sessionid = sessionid; }

public String getCreatetime() { return createtime; }

public void setCreatetime(String createtime) { this.createtime = createtime; }

public String getLastlogintime() { return lastlogintime; }

public void setLastLogintime(String lastlogintime) {

this.lastlogintime = lastlogintime;

} /**

* 获取昵称

* @return the nickname 昵称 */

public String getNickname() { return nickname; } /**

* 设置昵称

* @param nickname 昵称 */

public void setNickname(String nickname) { this.nickname = nickname; }

public String getTel() { return tel; }

public void setTel(String tel) { this.tel = tel; }

public String getEmail() { return email; }

public void setEmail(String email) { this.email = email; }

在这一步要注意的是 要和第四步中的字段匹配 这个是硬性要求来的 大家可以这两部项目查看就明白了。

第六步:实例化 SqlSessionFactory

在com.ibatis创建GetSqlSessionFactory.java

这个类的原理和实现Hibernate实例化的原来一样 我们可以定义一个单例模式来 完成实例化。代码如下:

public class GetSqlSessionFactory {

private static SqlSessionFactory sqlSessionFactory = null;

private static GetSqlSessionFactory getSqlSessionFactory = null;

private GetSqlSessionFactory(){

String rs = \"com/ibatis/sqlmap-config.xml\"; Reader reader = null; try {

reader = Resources.getResourceAsReader(rs);

} catch (IOException e) { e.printStackTrace(); }

sqlSessionFactory = new

SqlSessionFactoryBuilder().build(reader);

//注解方式查询时需要注册mapper

sqlSessionFactory.getConfiguration().addMapper(UserDaoTestImpl.class); }

public static GetSqlSessionFactory getInstance(){ if(getSqlSessionFactory == null){

getSqlSessionFactory = new GetSqlSessionFactory(); }

return getSqlSessionFactory; }

public static SqlSessionFactory getSqlSessionFactory(){ return sqlSessionFactory;

}

第七步:DAO 业务处理层

在com.ibatis创建UserDaoTest.java

DAO 不想多说 大家直接参考代码:

public class UserDaoTest implements UserDaoTestImpl {

@SuppressWarnings(\"static-access\") public List getTest(){

SqlSession session =

GetSqlSessionFactory.getInstance().getSqlSessionFactory().open Session();

List test = new ArrayList(); try{

//xml方式查询

test = session.selectList(\"testid\");

//注解方式查询 // UserDaoTestImpl userDaoTestImpl = session.getMapper(UserDaoTestImpl.class); // test = userDaoTestImpl.getTest();

}catch (Exception e) { e.printStackTrace(); }finally{

session.close(); }

return test; }

public void insertvalue(Test test){ @SuppressWarnings(\"static-access\") SqlSession session = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession();

try{

session.selectOne(\"insertvalues\",test); }catch (Exception e) { e.printStackTrace(); }finally{

}

session.close(); } }

到这里其实就可以完成的 但是我们的代码实现了接口 上面也有提到 我们可以用注解的方式来实现映射关系。注解方式就是其中一种 大家在测试的时候 可以使用xml 方式也可以使用注解的方式。

好吧 我们再努力一下下 看完下面的配置吧。

第八步:接口

在com.ibatis创建UserDaoTestImpl.java

接口中没有什么说的 其中有一样要注意的就是注解方式。 详细看代码:

public interface UserDaoTestImpl {

@Select(\" select * from test limit 1000\") List getTest() ;

void insertvalue(Test test); }

在这里 我只实现了一个查询的注解方式 还有插入 更新 删除等操作 希望大家可以自己完成。不好意思 谢谢。

第九步:Servlet 实验

到这里 大家都可以写一个Servlet 来验证一下 你的MyBaits 是否能跑起来了 。 如果大家按照上面的实现的话 我可以保证百分百可以成功的。

Servlet 我就不贴代码了 这个你懂的。嘻嘻。

等你所有都完成之后 你会发现你的项目是这样的:

匆忙中 命名空间不好 包实现不规范 请大家多多担待 因为这个项目主要是介绍了MyBatis 的运用和实现。所以我在做这个文档中并没有什么规划 只是想尽快写一个测试用例。请大家多多包涵:

如果有什么问题的可以邮件:**************** 我们一起学 习 谢谢!!!!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务