MyBatis经典入门实例

来源:互联网 发布:国家数据恢复中心费用 编辑:程序博客网 时间:2024/04/20 14:17

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配置文件。

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之间的映射。

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="selectGoods" 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();}}}
0 0
原创粉丝点击