mybatis入门学习之(1)+简单例子测试

Mybatis 入门之(1)环境配置+简单例子测试

  • 什么是MyBatis?

    它是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的XML或注解用于配置和原始映射,将接口和POJOs(Plan Old Java Objects,普通的 Java对象)映射成数据库中的记录。

    其实简单一点说mybatis就是一直访问数据库的技术,它是现在比较流行的一个持久层框架,如果你对JDBC熟悉那就更容易理解了,mybatis就是对JDBC的封装。

    其实学习一个框架不可能一下子全部学会,而是一步一步的学习,先简单的,然后再深入理解,小king也是最近才学习的mybatis,如出错了请大神指点,万分感谢!

    好了,说多了也是零,直接上例子吧:

  • 前提:

一、安装了eclipse或者myeclipse,JDK.....这些自然不用多说了,百度上一堆。

二、既然mybatis是访问数据库的技术,那么你至少懂一点数据库方面的东东,以下的例子如

果 不特别说明都是基于MYSQL的,因为MYSQL小而精悍,容易安装,方便使用。

如果你还在世纯粹的菜鸟,没写过代码,也没学过什么编程语言的coder,建议你先去学习一

本 java的书籍,这里不推荐什么书了,书没有好坏,只是你看完了能吸取多少?所以mybatis这玩

意建议还是有点编程基础的同志学习吧,也不是没基础的同志不能学,只是这样学起来没那么吃

力。

开发步骤(基于myeclipse+mysql):

一、数据库数据:

  • // 创建userinfo表
  • CREATE TABLE `userinfo` (
  • `id` int(11) NOT NULL AUTO_INCREMENT,
  • `username` varchar(20) NOT NULL,
  • `password` varchar(100) NOT NULL,
  • `permission` int(1) NOT NULL,
  • PRIMARY KEY (`id`)
  • ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
  • // 插入一些数据
  • INSERT INTO `userinfo` VALUES (‘1‘, ‘34‘, ‘444‘, ‘1‘);
  • INSERT INTO `userinfo` VALUES (‘2‘, ‘yyy‘, ‘111‘, ‘0‘);
  • INSERT INTO `userinfo` VALUES (‘3‘, ‘jetty‘, ‘111‘, ‘1‘);
  • INSERT INTO `userinfo` VALUES (‘4‘, ‘tom‘, ‘123‘, ‘1‘);
  • INSERT INTO `userinfo` VALUES (‘5‘, ‘tony‘, ‘123‘, ‘1‘);

二、相关文件如下(将mybatis和mysql的架包复制到lib下):

1. 创建一个java类,作为数据库实体的entity.

User.java :

  • package edu.nwsuaf.xc.entity;
  • import java.io.Serializable;
  • /**
  • * @author GhostKing
  • * 2015年1月1日
  • */
  • public class User implements Serializable {
  • private Integer id;
  • private String username;
  • private String password;
  • private Integer permission;
  • public Integer getId() {
  • return id;
  • }
  • public void setId(Integer 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;
  • }
  • public Integer getPermission() {
  • return permission;
  • }
  • public void setPermission(Integer permission) {
  • this.permission = permission;
  • }
  • @Override
  • public String toString() {
  • return "User [id=" + id + ", username=" + username + ", password="
  • + password + ", permission=" + permission + "]";
  • }
  • }

2. 创建映射文件userMap.xml,它就是数据库记录和java实体类user的映射。这个文件一般放在和

实体类一个包下。

userMap.xml :

<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"

"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<!--     namespace命名空间

是用来标唯一的,用在主配置文件中来寻找映射文件的

-->

<mapper namespace="edu.nwsuaf.xc.dao.UserDAO">

<!-- id 标示唯一

parameterType 传入参数的类型

resultType 返回的参数类型

-->

<select id="findById" parameterType="int"  resultType="edu.nwsuaf.xc.entity.User">

select * from userInfo where id=#{id}

</select>

<select id="findAllUser" resultType="edu.nwsuaf.xc.entity.User">

select * from userInfo

</select>

<insert id="addUser" parameterType="edu.nwsuaf.xc.entity.User">

insert into userInfo(username,password,permission)

values(#{username},#{password},#{permission})

</insert>

<delete id="deleteUser" parameterType="int">

delete from userInfo where id=#{id}

</delete>

<update id="updateUser" parameterType="edu.nwsuaf.xc.entity.User">

update userInfo

set username=#{username},password=#{password},

permission=#{permission}

where id=#{id}

</update>

</mapper>

3. 主配置文件conf.xml它是mybatis的住主配置文件,放在src下,其中主要配置

数据库的一些参数,另外还要加载映射文件。

Conf.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>

<!-- default的属性值为:

development 开发模式

work 工作模式

-->

<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/student" />

<property name="username" value="root" />

<property name="password" value="123456" />

</dataSource>

</environment>

</environments>

<mappers>

<!-- 加载映射文件 此处使用的文件路径/,而不是类路径.-->

<mapper resource="edu/nwsuaf/xc/entity/userMap.xml" />

</mappers>

</configuration>

其中需要自己修改的是数据源中的driver,url,username,password.另外在mappers下加载自己写的映射文件,其他的不需要变动。

4. 由于每次都需要获取链接,在此封装为一个util。

MyBatisUtil.java :

package edu.nwsuaf.xc.util;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**

* @author GhostKing

* 2015年1月1日

*/

public class MyBatisUtil {

/**

* 获取session

* @param confPath

* @return

*/

public static SqlSession getSession(){

String confPath = "config.xml";

SqlSessionFactory factory = new

SqlSessionFactoryBuilder().

build(MyBatisUtil.class.getClassLoader().getResourceAsStream(confPath));

return factory.openSession();

}

}

5. 测试,测试的模块较多时,建议采用jUnit的Test,如果不熟悉也可以用main方法写了测试。下面是简单的id查询,查询所有,增加,删除一条记录的测试代码:

TestUser.java :

package edu.nwsuaf.xc.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import org.junit.Test;

import edu.nwsuaf.xc.entity.User;

import edu.nwsuaf.xc.util.MyBatisUtil;

/**

* @author GhostKing

* 2015年1月1日

*/

public class TestUser {

@Test

public void testFindById() {

SqlSession session = MyBatisUtil.getSession();

String statement = "edu.nwsuaf.xc.dao.UserDAO"+".findById";

User user =session.selectOne(statement, 2);

System.out.println(user);

}

@Test

public void testUpdateUser() {

SqlSession session = MyBatisUtil.getSession();

String statement = "edu.nwsuaf.xc.dao.UserDAO"+".updateUser";

User user = new User();

user.setId(2);

user.setPassword("123456");

user.setUsername("maary");

user.setPermission(1);

int update = session.update(statement, user);

// 提交事务,也可以设置自动提交session.commit(true);

session.commit();

System.out.println(update);

// 关闭链接

session.close();

}

@Test

public void testAddUser() {

SqlSession session = MyBatisUtil.getSession();

session.commit(true);;

String statement = "edu.nwsuaf.xc.dao.UserDAO"+".addUser";

User user = new User();

user.setPassword("454545");

user.setUsername("kkkkk");

user.setPermission(1);

int insert = session.insert(statement, user);

System.out.println(insert);

session.close();

}

@Test

public void testFindAll() {

SqlSession session = MyBatisUtil.getSession();

String statement = "edu.nwsuaf.xc.dao.UserDAO"+".findAllUser";

List<User> users = session.selectList(statement);

for(User user : users){

System.out.println(user);

}

}

@Test

public void testDelete(){

SqlSession session = MyBatisUtil.getSession();

String statement = "edu.nwsuaf.xc.dao.UserDAO"+".deleteUser";

User user = new User();

user.setId(8);

session.delete(statement, user);

session.commit();

System.out.println("delete ok");

session.close();

}

}

最终的过程结构图:

时间: 2024-11-03 21:26:30

mybatis入门学习之(1)+简单例子测试的相关文章

MyBatis入门学习(二)

在MyBatis入门学习(一)中我们完成了对MyBatis简要的介绍以及简单的入门小项目测试,主要完成对一个用户信息的查询.这一节我们主要来简要的介绍MyBatis框架的增删改查操作,加深对该框架的了解.环境测试是上一节中的测试环境.在此感谢博主提供的资料. 一.通过MyBatis持久层框架完成对数据库表的增删改查操作——基于XML的实现 1.定义sql文件的映射文件,userMapper文件内容如下: <?xml version="1.0" encoding="UTF

Mybatis入门学习篇(三)之模糊查询的两种写法

在上一讲(Mybatis入门学习篇(二)之基于注解的增删改查)中,需要用到模糊查询,比如我想查找所有含有'zjh'的Student的信息.如果是在数据库中,那么我们可以方便的使用通配符%:select * from student where name like '%zjh%' .但是如果在mybatis中直接像sql中那样,就会报错.遂百度,无果,偶然在一篇帖子中看到,遂记录下来,以备后用. 方法一: 在要查询的字符串合适位置加上%,如这里的'zjh'就应该为'%zjh%'.这是一个很管用的方

mybatis入门学习

一.mybaits简介 java程序中常用的数据库框架. 二.mybait入门学习 1.环境 创建一个java或者javaweb项目:我是创建了一个structs项目,helloworld 2.添加相应的jar包

Jmeter 快速入门教程(二)--创建简单web测试

[版权所有: whoistester.com & jmeter.cf] 今天我们就来实际用Jmeter创建一个测试场景,并进行性能测试. 注:由于本人使用中文版本,使用英文版本的请注意具体的菜单及参数名称. 1. 添加线程组(相当于lr里的scenario 设置) 打开jmeter主窗口后, 选择左侧树形结构里的"测试计划". 然后右键选择添加, 选择"threads(users)",我们可以看到 [email protected]开头的是google jm

Mybatis入门学习(一)

1.MyBatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. 需要在Github上下载!地址:https://github.com/mybatis/mybatis-3 当前的最新版本是MyBatis 3.5.4! 我们可以在其官网上查看文档进行学习!地址:https://mybatis.org/myba

MyBatis入门学习教程-调用存储过程

一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男"); 8 insert into p_user(name,sex) values('B',&qu

MyBatis笔记----MyBatis 入门经典的两个例子: XML 定义与注解定义

----致敬MyBatis官方开放文档让大家翻译,不用看书直接看文档就行了,mybatis的中文文档还需要完备的地方 简介 什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录.

mybatis 入门学习

所需要jar包:mybatis-3.x.x.jar .如果需要和spring整合,还需要加入相关的包 1:看项目目录 红颜色不要关心 2:按照步骤: 1:加入jar包 2:创建数据源(configuration.xml)创建数据库(此处省略) <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config

MyBatis入门学习(三)

在实际开发中,我们希望文件配置是分类配置存放,需要的时候引入即可.如果多文件的配置混合配置使用,那么对项目的后期维护将增加难度. 一.对于连接数据库的配置单独放在一个properties文件中 1.对于之前的配置我们是将数据库配置放置在conf.xml文件中,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//