博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis3入门一(简单查询、插入)
阅读量:7087 次
发布时间:2019-06-28

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

1. 环境

mybatis-3.2版本,jdk1.6版本,Oracle数据库

2. 功能

实现基本的数据单条插入、单条查询功能。

3. 准备工作

3.1 下载mybatis-3.2,需要引用其中的若干包 

mybatis-3.2.0.jar    lib/asm-3.3.1.jar    lib/cglib-2.2.2.jar    lib/commons-logging-1.1.1.jar    lib/javassist-3.17.1-GA.jar    lib/log4j-1.2.17.jar    lib/slf4j-api-1.7.2.jar    lib/slf4j-log4j12-1.7.2.jar

3.2 项目的目录结构

src\com\clzhang\sample\struts2\mapper             MemberUserMapper.java               mybatis的mapper处理类src\com\clzhang\sample\struts2\mapper\entity      MemberUserBean.java                mybatis的entity类src\com\clzhang\sample\struts2\test               MyBatisTest.java                  测试类,最终应该是在service的package中调用mapper中的方法。resources\config   mybatis-config.xml        mybatis的配置文件 resources\com\clzhang\sample\struts2\mapper   MemberUserMapper.xml      mybatis的mapper配置文件

3.3 假定数据库已经创建,表结构也已经创建,并且有测试数据

这里数据库为Oracle,表名:MEMBER_USER,数据结构如下(假设已经存在测试数据):

CREATE TABLE MEMBER_USER (ID NUMBER NOT NULL PRIMARY KEY,NAME VARCHAR2(30),PERSONMOBILE VARCHAR2(20),ADDRESS VARCHAR2(255),AGE NUMBER);

4. 具体步骤

4.1 创建entity类

package com.clzhang.sample.struts2.mapper.entity;public class MemberUserBean {    private int id;    private String name;    private String personMobile;    private String address;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPersonMobile() {        return personMobile;    }    public void setPersonMobile(String personMobile) {        this.personMobile = personMobile;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }}

4.2 创建mapper类

package com.clzhang.sample.struts2.mapper;import com.clzhang.sample.struts2.mapper.entity.MemberUserBean;public interface MemberUserMapper {    public void insertUser(MemberUserBean user);        public MemberUserBean getUser(int id); }

4.3 创建mybatis-config.xml的配置文件,位置于resources/config目录

4.4 创建MemberUserMapper.xml配置文件,位置于:resources\com\clzhang\sample\struts2\mapper\

INSERT INTO MEMBER_USER (ID, NAME, PERSONMOBILE, ADDRESS) VALUES(#{id}, #{name}, #{personMobile}, #{address})

 4.5 创建测试类 

package com.clzhang.sample.struts2.test;import java.io.IOException;import java.io.Reader;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 org.junit.Test;import com.clzhang.sample.struts2.mapper.MemberUserMapper;import com.clzhang.sample.struts2.mapper.entity.MemberUserBean;/** * mybatis的测试类,真正的应用,应该在service包中调用。 * @author Administrator * */public class MyBatisTest {    private static final String MYBATIS_CONFIG_FILENAME = "config/mybatis-config.xml";    private static SqlSessionFactory sqlSessionFactory;        static {        Reader reader = null;        try {            reader = Resources.getResourceAsReader(MYBATIS_CONFIG_FILENAME);        } catch (IOException e) {            System.out.println(e.getMessage());        }        // 一旦你创建了 SqlSessionFactory 后,SqlSessionFactoryBuilder这个类就不需要存在了。        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);    }        /**     * SqlSessionFactory 应该在你的应用执行期间都存在。没有理由来处理或重新创建它。     * @return     */    public static SqlSessionFactory getSqlSessionFactory() {        return sqlSessionFactory;    }//    @Test    public void testAdd() {        // SqlSession 的实例不能被共享,也是线程不安全的。因此最佳的范围是请求或方法范围。        SqlSession sqlSession = getSqlSessionFactory().openSession();        try {            // 从技术上来说,当被请求时,任意映射器实例的最宽范围和 SqlSession 是相同的。最佳范围是方法范围。            MemberUserMapper mapper = sqlSession                    .getMapper(MemberUserMapper.class);                        MemberUserBean memberUser = new MemberUserBean();            memberUser.setId(1003);            memberUser.setName("张三");            memberUser.setPersonMobile("18387887878");            memberUser.setAddress("北京丰台某公司");                        mapper.insertUser(memberUser);            sqlSession.commit();        } finally {            sqlSession.close();        }    }    @Test    public void getUser() {        SqlSession sqlSession = getSqlSessionFactory().openSession();        try {            MemberUserMapper mapper = sqlSession                    .getMapper(MemberUserMapper.class);            MemberUserBean memberUser = mapper.getUser(725);                        System.out.println("name:" + memberUser.getName() + "\tmobile:"                    + memberUser.getPersonMobile() + "\taddress:" + memberUser.getAddress());        } finally {            sqlSession.close();        }    }}

测试输出:

name:吴经理 mobile:13695769533 address:浙江省乐清市北白象金炉工业区

转载地址:http://yerml.baihongyu.com/

你可能感兴趣的文章
crondtab 定时任务
查看>>
【ios】导航跳转
查看>>
linux下建立回收站防止误删除及定期清空
查看>>
动态安全模型
查看>>
liuux/ Unix 文件管理命令(五)
查看>>
Hadoop学习笔记之二:HDFS体系架构
查看>>
foreman架构的引入4-安装Foreman1.6.3架构(foreman与puppetmaster分离)
查看>>
W和L
查看>>
TCP/IP协议解析
查看>>
德国罗森伯格推出MU Uniboot数据中心高密度布线系统
查看>>
Centos以及windows2003server系统下的密码重置
查看>>
CCNA学习笔记 一 基础方面
查看>>
依靠ipsec实现***通道
查看>>
你真的做好购买相机的准备了吗?
查看>>
我的友情链接
查看>>
squid反向代理安全控制
查看>>
liunx安装wdcp php5.3.17版本,并安装pdo组件
查看>>
cisco按需路由实验配置
查看>>
Centos下Yum安装PHP5.5,5.6,7.0
查看>>
WSFC2012 为什么网络名称联机失败
查看>>