设为首页 收藏本站
查看: 1801|回复: 0

[经验分享] MyBatis经典入门实例

[复制链接]

尚未签到

发表于 2016-11-24 10:25:40 | 显示全部楼层 |阅读模式
  周末学习了MyBatis开源框架,MyBatis是由原来的iBatis改名而来,目前已近发布了3.0.1版本。可以在官方网站http://www.mybatis.org下载。
  MyBatis作为持久层框架,其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现sql的灵活配置。这样做的好处是将sql与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改sql。下面给个简单的入门例子。
  下面的例子实现从数据库中查询商品表(Goods)中id为1的商品,并打印出商品名称。
  数据库建表脚本如下:

DROP TABLE GOODS;
CREATE TABLE GOODS(
ID INT PRIMARY KEY,
CATE_ID INT,
NAME VARCHAR(50),
PRICE DECIMAL(16,2),
DESCRIPTION VARCHAR(100),
ORDER_NO INT,
UPDATE_TIME TIMESTAMP
);

  数据库初始化脚本:

INSERT INTO GOODS(ID,CATE_ID,NAME,PRICE,DESCRIPTION,ORDER_NO,UPDATE_TIME) VALUES (1,1,'诺基亚N85',3010,'内置RealPlayer播放器',1,CURRENT_TIMESTAMP);
INSERT INTO GOODS(ID,CATE_ID,NAME,PRICE,DESCRIPTION,ORDER_NO,UPDATE_TIME) VALUES (2,1,'金立 A30',2000,'标准锂电池两块',2,CURRENT_TIMESTAMP);

  一、configuration.xml配置文件
  首先在工程中导入mybatis-3.0.1.jar包。然后编写configuration.xml配置文件。

<!--sp-->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>
<typeAliases>
<typeAlias alias="Goods" type="com.oryx.mybatis.Goods"/>
typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="com/oryx/mybatis/GoodsMapper.xml"/>
mappers>
configuration>


  二、Mapper.xml配置文件
  接着编写GoodsMapper.xml配置文件。Mapper配置文件主要是实现POJO类和sql之间的映射。

<!--sp-->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">
<mapper namespace="com.oryx.mybatis.GoodsMapper">
<select id="selectGood" parameterType="int" resultType="Goods">
select * from Goods where id = #{id}
select>
mapper>




  其中#{id}是需要传入的参数,parameterType是参数的类型,resultType是查询返回的结果类。这地方的Goods是一个别名,可以在configuration.xml文件中找到它对应的具体类。
  由此可知查询结果集将保存在com.oryx.mybatis.Goods中返回。
  三、Goods类
  在工程中新建com.oryx.mybatis.Goods.java类。

package com.oryx.mybatis;
import java.sql.Timestamp;
public class Goods {
private String id;
private String cateId;
private String name;
private double price;
private String description;
private int orderNo;
private Timestamp updateTime;
/**
* @return the goodsid
*/

public String getId() {
return id;
}
/**
* @param goodsid the goodsid to set
*/

public void setId(String id) {
this.id = id;
}
/**
* @return the cateId
*/

public String getCateId() {
return cateId;
}
/**
* @param cateId the cateId to set
*/

public void setCateId(String cateId) {
this.cateId = cateId;
}
/**
* @return the name
*/

public String getName() {
return name;
}
/**
* @param name the name to set
*/

public void setName(String name) {
this.name = name;
}
/**
* @return the price
*/

public double getPrice() {
return price;
}
/**
* @param price the price to set
*/

public void setPrice(double price) {
this.price = price;
}
/**
* @return the description
*/

public String getDescription() {
return description;
}
/**
* @param description the description to set
*/

public void setDescription(String description) {
this.description = description;
}
/**
* @return the orderNo
*/

public int getOrderNo() {
return orderNo;
}
/**
* @param orderNo the orderNo to set
*/

public void setOrderNo(int orderNo) {
this.orderNo = orderNo;
}
/**
* @return the updateTime
*/

public Timestamp getUpdateTime() {
return updateTime;
}
/**
* @param updateTime the updateTime to set
*/

public void setUpdateTime(Timestamp updateTime) {
this.updateTime = updateTime;
}
}

  四、测试用例

package com.oryx.mybatis;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class TestMyBatis {
public static void main(String[] args) throws SQLException, IOException{
String resource = "com/oryx/mybatis/configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sessionFactory.openSession();
try{
Goods goods = (Goods)session.selectOne("com.oryx.mybatis.GoodsMapper.selectGoods",1);
System.out.println("good name:"+goods.getName());
}finally{
session.close();
}
}
}
实例源代码下载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-304877-1-1.html 上篇帖子: Mybatis的缓存 下篇帖子: mybatis 缓存的简单配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表