一、 Mybatis项目搭建

一、 Mybatis项目搭建

1.      MyBatis介绍

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

JDBC->dbutils(无对象概念)->MyBatis(半对象)->Hibernate(全对象)

2. 搭建

1)      新建项目,添加jar包

【mybatis】mybatis-3.1.1.jar

【oracle驱动包】ojdbc6.jar

2)      建表

--序列

create sequence seq_user

start with 1

increment by 1;

 

CREATE TABLE users(id number(8) PRIMARY KEY,NAME VARCHAR2(20),age number(4));

INSERT INTO users(id,NAME,age) VALUES(seq_user.nextval,'A', 12);

INSERT INTO users(id,NAME,age)VALUES(seq_user.nextval,'B', 11);

3)      添加Mybatis的配置文件conf.xml

右键项目->others->搜索xml,点击xml file,新建conf.xml

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDConfig 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

   <environments default="development">

      <environment id="development">

        <transactionManager type="JDBC"/>

        <dataSource type="POOLED">

           <property name="driver"value="oracle.jdbc.driver.OracleDriver" />

           <property name="url"value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>

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

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

        </dataSource>

      </environment>

   </environments>

   <mappers>

      <mapper resource="com/mybatis/entity/userMapper.xml"/>

   </mappers>

</ configuration >

4)      定义表所对应的实体类

package com.mybatis.entity;

public class User {

   private int id;

   private String name;

   private int age;

//添加get/set方法

//重写toString()

}

5)      定义操作 users 表的 sql 映射文件 userMapper.xml(对users表增删改查)

<?xml version="1.0"encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDMapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.mybatis.entity.userMapper">

   <insert id="addUser"parameterType="com.mybatis.entity.User">

      insertinto users (id,name,age) values (id_seq.nextval,#{name},#{age})

   </insert>

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

      deletefrom users where id=#{id}

   </delete>

   <update id="updateUser"parameterType="com.mybatis.entity.User">

      updateusers set name=#{name},age=#{age} where id=#{id}

   </update>

   <select id="getUserById"parameterType="int" resultType="com.mybatis.entity.User">

      select* from users where id=#{id}

   </select>

   <select id="getAllUser"resultType="com.mybatis.entity.User">

      select* from users

   </select>

</ mapper >

6)      在 conf.xml 文件中注册 userMapper.xml 文件

<mappers>

      <mapper resource="com/mybatis/entity/userMapper.xml"/>

</ mappers >

7)      新建一个工具类DbUtil

package com.mybatis.util;

 

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;

 

public class DbUtil {

 

   public static SqlSession getSession() {

      SqlSessionsession = null;

      try {

        Stringresource = "conf.xml";

        //加载 mybatis 的配置文件(它也加载关联的映射文件)

        Readerreader = Resources.getResourceAsReader(resource);

        //构建 sqlSession 的工厂

        SqlSessionFactorysessionFactory =new SqlSessionFactoryBuilder().build(reader);

        //创建能执行映射文件中 sql sqlSession

        session = sessionFactory.openSession();

      }catch (Exception e) {

        e.printStackTrace();

      }

      return session;

   }

}

8)      编写测试代码,执行定义的增删改查

package com.mybatis.test;

 

import static org.junit.Assert.*;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import org.junit.Test;

import com.mybatis.entity.User;

import com.mybatis.util.DbUtil;

 

public class UserTest {

 

   //通过工具类获取session

   SqlSessionsession = DbUtil.getSession();

   Useruser = new User();

  

   @Test

   public void testAddUser() {

      int insertok = 0;

      try {

        //映射 sql 的标识字符串

        Stringstatement="com.mybatis.entity.userMapper"+"."+"addUser";

        user.setName("zhangsan");

        user.setAge(12);

        //执行insert添加用户

        insertok = session.insert(statement, user);

        if(insertok>0){

           session.commit();

           System.out.println("插入成功");

        }else {

           System.out.println("插入失败");

        }

      }catch (Exception e) {

        e.printStackTrace();

        fail("Not yet implemented");

      }

   }

  

   @Test

   public void deleteUser(){

      int deleteok = 0;

      try {

        Stringstatement="com.mybatis.entity.userMapper.deleteUser";

        user.setId(8);

        //执行delete将对应id的用户删除

        deleteok = session.delete(statement, user.getId());

        if(deleteok>0){

           session.commit();

           System.out.println("删除成功");

        }else {

           System.out.println("删除失败");

        }

      }catch (Exception e) {

        e.printStackTrace();

      }

   }

  

   @Test

   public void updateUser(){

      int updateok = 0;

      try {

        Stringstatement = "com.mybatis.entity.userMapper.updateUser";

        user.setId(6);

        user.setName("monkey");

        user.setAge(11);

        //执行update,将对应id的用户更新

        updateok = session.update(statement, user);

        if(updateok>0){

           session.commit();

           System.out.println("更新成功");

        }else {

           System.out.println("更新失败");

        }

      }catch (Exception e) {

        e.printStackTrace();

        fail("Not yet implemented");

      }

   }

  

   @Test

   public void selectAllUser(){

      try {

        Stringstatement = "com.mybatis.entity.userMapper.getAllUser";

        List<User>users = null;

        //执行查询返回所有user

        users = session.selectList(statement);

        System.out.println(users);

      }catch (Exception e) {

        e.printStackTrace();

      }

   }

 

   @Test

   public void selectUserById(){

      try {

        Stringstatement = "com.mybatis.entity.userMapper.getUserById";

        //执行查询返回一个唯一 user 对象的 sql

        user = session.selectOne(statement, 6);

        System.out.println(user);

      }catch (Exception e) {

        e.printStackTrace();

      }

   }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值