一、MyBatis简单介绍


iBatis是apche的一个开源项目。2010年迁移到google code后改名为MyBatis,2013年前已到github.MyBatis是一个基于java的持久层框架。与hibernate相比更加简单。关于MyBatis和Hibernate的对照,可參考这篇博客:Hibernate与 MyBatis的比較.

二、MyBatis特点


  1. 开源的优秀持久层框架
  2. sql语句与代码分离
  3. 面向配置编程
  4. 支持复杂数据映射
  5. 动态sql

三、MyBatis开发环境搭建


工程文件夹:

3.1下载jar包

  1. mybatis-3.2.8.zip(3.2.8之后的jar包没有log4j,这一点我临时也不知道为什么)
  2. mysql-connector,选择JDBC Driver for MySQL下载。

3.2在mysql中新建数据库

MyBatis是一个持久层框架,也就是和数据库打交道的,mysql新建一个数据库用来做測试。

create database book

建立一张user表:

Create Table: CREATE TABLE `User` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`passWord` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
)

插入几条记录:

+----+----------+------------+
| id | username | passWord |
+----+----------+------------+
| 1 | 小华 | xiaohua |
| 2 | 柯南 | 666666 |
| 3 | 慕白 | 123456 |
| 4 | 小明 | xiaoming12 |
+----+----------+------------+

这样数据库准备好了,也能够在mysql图形界面中操作。

3.3配置开发环境

3.3.1新建java project

在eclipse中新建java project,命名为Mybatis HelloWorld

3.3.2导入jar包

单击工程名右键->build path->config build path->add external jars,加入下面jar包mysql-connector-java-5.1.38-bin.jarmybatis-3.2.8.jarasm-3.3.1.jarcglib-2.2.2.jarcommons-logging-1.1.1.jarjavassist-3.17.1-GA.jarlog4j-1.2.17.jarlog4j-api-2.0.2.jarlog4j-core-2.0.2.jarslf4j-api-1.7.5.jarslf4j-log4j12-1.7.5.jar

3.3.3配置log4j

在src文件夹下加入log4j.properties,log4j可用来打印sql查询语句:

log4j.rootLogger=DEBUG, CONSOLE

#Console
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

3.3.4 加入User.java

新建ucas.book.map、ucas.book.pojo、ucas.book.test包

在ucas.book.pojo包下新建User实体:

package ucas.book.pojo;

public class User {
private int id;
private String username;
private String password; public int getId() {
return id;
} public void setId(int 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;
} }

3.3.5Mybatis配置文件

在ucas.book.map包下加入mybatis.xml和UserMapper.xml:

数据库连接和相关配置信息写在mybatis.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="User" type="ucas.book.pojo.User" />
</typeAliases> <environments default="development">
<environment id="development">
<!-- 事务管理类型,JDBC表示直接使用JDBC的提交和回滚设置,依赖于数据源得到的连接来管理事务 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池POOLED表示使用数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/book?useSSL=true" />
<property name="username" value="root" />
<property name="password" value="napoay" />
</dataSource>
</environment>
</environments> <mappers>
<!-- SQL代码和映射信息配置文件 -->
<mapper resource="ucas/book/map/UserMapper.xml" />
</mappers>
</configuration>

sql代码写在UserMapper.xml中:

<?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">
<!-- namespace必须是唯一的,建议用该文件所在的包路径全类名 -->
<mapper namespace="ucas.book.map.UserMapper">
<!-- select:表示这是一个查询操作 -->
<!-- id:用来配合namespace来定位这个操作,也就是在调用时,将採用ucas.book.pojo.User.getUserById -->
<!-- resultType:表示返回值类型,必须是全类名。MyBatis将自己主动为我们将查询结果封装成Student对象 -->
<!-- parameterType:表示传进来的參数的类型,由于传的是id主键。所以是int型 -->
<select id="getUserById" parameterType="int" resultType="ucas.book.pojo.User">
<!-- #{id}:表示占位符。也就是调用时必须为其传一个id參数进来。注意是#不是$ -->
select * from User where id = #{id}
</select>
</mapper>

<select></select>中写的是通过id查询记录的sql语句。

3.3.6測试代码

package ucas.book.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 ucas.book.pojo.User; public class TestUser {
public static void main(String[] args) {
String resource = "ucas/book/map/mybatis.xml";
Reader reader = null;
SqlSession session; try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); session = factory.openSession();
User user = session.selectOne("getUserById", 1); System.out.println("\nusername:" + user.getUsername()); session.close(); }
}

结果:

[J2EE]MyBatis HelloWorld的更多相关文章

  1. Mybaits 源码解析 (一)----- 搭建一个mybatis框架(MyBatis HelloWorld)

    源码分析之前先搭一个mybatis的demo,这个在看源码的时候能起到了很大的作用,因为在看源码的时候,会恍然大悟,为什么要这么配置,为什么要这么写.(老鸟可以跳过这篇) 开发环境的准备 创建mave ...

  2. 01、MyBatis HelloWorld

    1. MyBatis简介 1)MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架 2)MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 3)MyB ...

  3. J2EE开发HelloWorld

    J2EE开发实战基础系列一 HelloWorld 开始咱们的第一个程序,首先是配置环境,按照上一章所描述的方式下载开发工具,然后配置Java环境变量,给大家看下具体的结构: 环境变量配置OK的提示,如 ...

  4. J2EE MyBatis使用

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .20 ...

  5. 新建一个mybatis HelloWorld

    1.下载mybatis https://github.com/mybatis/mybatis-3/ 没有梯子好像打不开 下载一个最新版本,我这里下载的是mybatis-3.4.1.zip 里面有myb ...

  6. Mybatis——helloWorld级程序

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...

  7. Mybatis(1) 创建Mybatis HelloWorld

    简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...

  8. springboot之HelloWorld

    简介 为了简化开发Spring的复杂度,Spring提供了SpringBoot可以快速开发一个应用,这里就简单介绍下SpringBoot如何快速开发一个J2EE应用 HelloWorld 首先在gra ...

  9. mybatis(1)

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

随机推荐

  1. Geeks - Check whether a given graph is Bipartite or not 二分图检查

    检查一个图是否是二分图的算法 使用的是宽度搜索: 1 初始化一个颜色记录数组 2 利用queue宽度遍历图 3 从随意源点出发.染色0. 或1 4 遍历这点的邻接点.假设没有染色就染色与这个源点相反的 ...

  2. ci框架(二)

    自定义SQL语句                                                                             当提供的API满足不了我们对S ...

  3. Shiro(4)默认鉴权与自定义鉴权

    =========默认鉴权======== 过滤链中定义: <!-- 过滤链定义 --> <property name="filterChainDefinitions&qu ...

  4. 用dd命令复制磁盘分区

    用dd命令复制磁盘分区 首先是复制 复制前对写入的分区执行umount操作 sudo dd if=/dev/sda1 of=/dev/sda2 可以在另外一个终端输入这句,然后在原来的dd终端看到进度 ...

  5. poj 2778 AC自己主动机 + 矩阵高速幂

    // poj 2778 AC自己主动机 + 矩阵高速幂 // // 题目链接: // // http://poj.org/problem?id=2778 // // 解题思路: // // 建立AC自 ...

  6. Java实现二叉树及相关遍历方式

    Java实现二叉树及相关遍历方式 在计算机科学中.二叉树是每一个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(r ...

  7. Discuz常见小问题2-如何在数据库搜索指定关键字

    点击搜索,然后输入关键字,注意要全选或者部分选择表(一个数据库的表),点击右下角的执行   会提示有多少个匹配,可以在浏览器中直接搜索"1个匹配"来定位到哪个数据表找到了匹配项,然 ...

  8. C++ STL中Map的按Key排序

    为了实现快速查找,map内部本身就是按序存储的(比如红黑树).在我们插入<key, value>键值对时,就会按照key的大小顺序进行存储.这也是作为key的类型必须能够进行<运算比 ...

  9. 【DB2】DbVisualizer编译存储过程

    之前我一直以为DbVisualizer是不可以编译存储过程的,现在才发现是可以的,编译如下: 只需要在编译的时候注意使用--/与/将存储过程包为起来编辑即可.

  10. 分享几款流行的Java框架

    虽然Java一直被唱衰,但是直到现在Java软件开发也坚持霸主地位不动摇,毫无疑问,Java是目前最热门的编程语言之一,下面分享几个个人认为还不错的Java框架,以及各自的优缺点,希望能对大家有帮助. ...