博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis使用DEMO及cache的使用心得
阅读量:5827 次
发布时间:2019-06-18

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

下面是一个简单的MyBatis使用DEMO。

整体结构

整体代码大致如下:

 

POM依赖

需要引用两个jar包,一个是mybatis,另一个是mysql-connector-java,如果是maven工程的话,pom里如下添加依赖就可以了。

复制代码
org.mybatis
mybatis
3.2.3
mysql
mysql-connector-java
5.1.26
复制代码

 

数据准备

在MySQL中造点数据进行测试用:

复制代码
CREATE DATABASE mybatis_test;CREATE TABLE user(    age INTEGER NOT NULL,    name VARCHAR(64) NOT NULL DEFAULT '');insert user values(18,'zhanjindong');insert user values(20,'zhangsan');
复制代码

 

配置文件

需要两类配置文件,一类是MyBatis的配置文件mybatis-config.xml,示例中是一个很简单配置,详细的配置网上有很多说明。

复制代码
复制代码

另一类是数据访问接口映射文件:示例中是UserMapper.xml。这个文件一般放在src/main/resource下面或子目录下mybatis就可以找到了,在mybatis-config.xml中由mappers/mapper节点的resource指定。

复制代码
insert into user(name,age) values(#{name},#{age})
复制代码

对应这个映射文件就是test.mybatis这个命名空间下的UserMapper这个接口,只是定义了访问数据表的接口:

复制代码
package test.mybatis;public interface UserMapper {    public void insertUser(User user);    public User getUser(String name);}
复制代码

需要一个POJO:User.java

复制代码
package test.mybatis;public class User {    private String name;    private Integer age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public User(String name, Integer age) {        super();        this.name = name;        this.age = age;    }    public User() {        super();    }}
复制代码

 

测试

通过MyBatis操作数据库用到的是一个叫SqlSession的类,这个类是通过SqlSessionFactory产生的,一般建议在全局维护一个SqlSessionFactory就可以了。

TestMyBatis.java

复制代码
package test.mybatis;import java.io.IOException;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MyBatisUtil {    private final static SqlSessionFactory sqlSessionFactory;    static {        String resource = "mybatis-config.xml";        Reader reader = null;        try {            reader = Resources.getResourceAsReader(resource);        } catch (IOException e) {            System.out.println(e.getMessage());        }        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);    }    public static SqlSessionFactory getSqlSessionFactory() {        return sqlSessionFactory;    }}
复制代码

测试代码如下:

TestMyBatis.java

复制代码
package test.mybatis;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;public class TestMyBatis {    static SqlSessionFactory sqlSessionFactory = null;    static {        sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();    }    public static void main(String[] args) {        testAdd();        getUser();    }    public static void testAdd() {        SqlSession sqlSession = sqlSessionFactory.openSession();        try {            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);            User user = new User("lisi", new Integer(25));            userMapper.insertUser(user);            sqlSession.commit();// 这里一定要提交,不然数据进不去数据库中        } finally {            sqlSession.close();        }    }    public static void getUser() {        SqlSession sqlSession = sqlSessionFactory.openSession();        try {            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);            User user = userMapper.getUser("zhangsan");            System.out.println("name: " + user.getName() + "|age: "                    + user.getAge());        } finally {            sqlSession.close();        }    }}
复制代码

 

注意事项

1、mybatis会用log4j记录日志,但是开启debug模式貌似对性能影响非常厉害。

2、mybatis的查询缓存对性能的影响非常大,启用和不启用差距非常大

注意:mapper文件中一定要加上cache这一行,否则不生效。

 

示例代码下载

 

http://www.cnblogs.com/zhanjindong/p/3397828.html

 

你可能感兴趣的文章
学习:UTF-8和GBK的区别
查看>>
Shape parameter 形状参数
查看>>
【求助】小系统组成大系统所遇到的问题
查看>>
js 中英文字符串长度
查看>>
让xp系统(win2003系统)支持搜索文件内容
查看>>
linux上传下载文件rz,sz
查看>>
go语言hello.go
查看>>
Sqlserver 2005+:查看索引【index】的【碎片】
查看>>
动态横向(水平)合并Repeater数据行DataItem的列
查看>>
nginx听课随记杂记
查看>>
上传图片时出现Request 对象 错误 'ASP 0104 80004005'
查看>>
Redis 在 Java 中的使用
查看>>
刘强东又安利自家的7FRESH了!然而,怎么变成了求“加速”
查看>>
海尔首创全程管家模式:从用户找海尔到海尔找用户
查看>>
腾讯游戏容器云平台的技术演进之路
查看>>
陪伴一家公司成长,戴尔易安信如何做到的
查看>>
孙杨:如果每一个中国人都用荣耀手机,我们的人民和国家会更强大
查看>>
猫眼确定2家基石投资者:最快春节前上市 腾讯表态支持
查看>>
因聚而生,以行致盛丨华为中国ICT生态之行2018走进齐齐哈尔
查看>>
展现千年科举历史的广东惠州古代科举制度陈列馆开馆
查看>>