MyBatis框架中通过映射文件或实现增删改查操作

开发工具:mysql +IDEA

什么是 MyBatis?

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis和Hibernate的使用基本一样,区别在于Hibernate在Java代码中实现数据库操作,集成度高;Mybatis在注解或者xml文件中通过配置实现SQL语句,更加灵活


MyBatis实例:

目录结构





一:我们先导依赖,需要用到mysql和mybatis的jar包

<!-- 引入 Mysql依赖-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.43</version>
</dependency>



<!--MyBatis依赖-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.5</version>
</dependency>

二:创建并配置MyBatis的配置文件

mybatis-config.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>
    <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/test"/>
                <property name="username" value="root"/> <!--数据库名-->
                <property name="password" value="123"/> <!--数据库密码-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/entity/User.xml"/> <!--加载映射文件-->

    </mappers>

</configuration>

三:写实体类

User

package com.entity;

public class User {

    private int uid;

    private String uname;

    private String upass;

    public User() {
    }

    public User(String uname, String upass) {
        this.uname = uname;
        this.upass = upass;
    }

    public User(int uid, String uname, String upass) {
        this.uid = uid;
        this.uname = uname;
        this.upass = upass;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpass() {
        return upass;
    }

    public void setUpass(String upass) {
        this.upass = upass;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", uname='" + uname + '\'' +
                ", upwd='" + upass + '\'' +
                '}';
    }
}
 

四:在映射文件中实现增删改查操作

(映射文件要是写在java的目录下的话它不会自动检测xml配置文件,想要检测到映射xml文件的话有两种解决办法:

 一:直接把映射文件写在resource的目录下

二:在pom.xml文件中让配置它自动检测你的xml文件,需要写在</build>前面

<!--加载能够读取到映射文件-->
<resources>
  <resource>
    <directory>src/main/java</directory>
     <includes>
       <include>
          **/*.xml
       </include>
     </includes>
  </resource>

</resources>)

User.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">

<mapper namespace="user">

    <!--查询单个对象-->
    <select id="getUserById" parameterType="int" resultType="com.entity.User">
        select * from user where uid=#{uid};
    </select>

    <!--查询集合-->
    <select id="getAllUsers" resultType="com.entity.User">
        select * from user;
    </select>

    <!--添加数据  可以用insert标签-->
    <select id="addUser" parameterType="com.entity.User"  resultType="com.entity.User">
        insert into user(uname,upass) values(#{uname},#{upass});
    </select>
    <!--删除数据  可以用delete标签-->
    <select id="deleteUser" parameterType="int">
        delete from user where uid=#{uid};
    </select>

    <!--修改数据 可以用update标签-->
    <select id="updateUser" parameterType="com.entity.User" resultType="com.entity.User">
        update user set uname=#{uname},upass=#{upass} where uid=#{uid};
    </select>  

</mapper>


五:实现数据

package com.test;
import com.dao.IUserDaos;
import com.entity.User;
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 java.io.InputStream;
import java.util.List;

public class TestMyBatis {
     @Test
    public void testMy() throws Exception{
        //加载配置文件
        //得到SQLSessionFactory(MyBatis中)

        String resource="mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        //得到SqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();

        //单个
        User user=sqlSession.selectOne("user.getUserById",4);
        System.out.println("测试单个"+user);

        //测试集合
       List<User> list=sqlSession.selectList("user.getAllUsers");
         for (User user1 : list) {
             System.out.println("测试集合"+user1);
       }


       // 测试添加
     User users=new User("aaa","1234");
     sqlSession.insert("user.addUser",users) ;
      System.out.println("添加的值:"+users);


       // 测试删除
      sqlSession.delete("user.deleteUser",39);
      System.out.println("删除成功!");

       //测试修改
       User user1=new User(4,"咦咦咦","3456");
       sqlSession.update("user.updateUser",user1);
       System.out.println("修改成功!");
       
       sqlSession.commit();
       sqlSession.close();

    }

}


调用Dao的增删改查:

先写dao的接口:

package com.dao;

import com.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface IUserDaos {

    //查询单个
    public User getUserById(int uid);

    //查询所有
    public List<User> getAllUsers();

    //添加
    public void addUser(User user);

    //删除
    public int deleteUser(int uid);

    //修改
    public void updateUser(User user);

}

然后把映射文件中的命名空间改为dao的接口(不需要在写实现类了,只要写接口方法即可)



然后需要得到dao的类

package com.test;
import com.dao.IUserDaos;
import com.entity.User;
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 java.io.InputStream;
import java.util.List;

public class TestMyBatis {
     @Test
    public void testMy() throws Exception{
        //加载配置文件
        //得到SQLSessionFactory
        String resource="mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        //得到SqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();

       //通过dao方法进行CRUD
        IUserDaos iUserDaos= sqlSession.getMapper(IUserDaos.class);

         User user=iUserDaos.getUserById(26);
         System.out.println(user);

         List<User> list=iUserDaos.getAllUsers();
         for (User user1 : list) {
             System.out.println(user1);
         }

        User user2= new User("bbb","345678");
        iUserDaos.addUser(user2);
        System.out.println("添加的值:"+user2);


        iUserDaos.deleteUser(4);
        System.out.println("删除成功!");

         User user1=new User(33,"小明","3456");
         iUserDaos.updateUser(user1);
         System.out.println("修改成功!");


       sqlSession.commit();
       sqlSession.close();

    }

}

通过注解实现增删改查:

只需要在方法上面加上注解即可,不需要映射文件了

IUserDaos:

//查询单个
@Select("SELECT * FROM user WHERE uid = #{id}")
public User getUserById(int uid);

//查询所有
@Select("SELECT * FROM user")
public List<User> getAllUsers();

//添加
@Insert("INSERT INTO user(uname,upass) VALUES(#{uname},#{upass})")
public void addUser(User user);

//删除
@Delete("DELETE FROM user WHERE uid=#{uid}")
public int deleteUser(int uid);

//修改
@Update("UPDATE user SET uname=#{uname},upass=#{upass} WHERE uid=#{uid}")
public void updateUser(User user);

然后在mybatis-config.xml文件中配置dao包



实现:

package com.test;

import com.dao.IUserDaos;
import com.entity.User;
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 java.io.InputStream;
import java.util.List;

public class Testself_study {

    //注解
    @Test
    public void testselfstudy() throws Exception{

        //加载配置文件
        //得到SQLSessionFactory

        String resource="mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        //得到SqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        
        IUserDaos iUserDaos=sqlSession.getMapper(IUserDaos.class);

        //注解得到单个
        User user=iUserDaos.getUserById(26);
        System.out.println("单个:"+user);

       //注解得到所有
       List<User> list= iUserDaos.getAllUsers();
        for (User user1 : list) {
            System.out.println("得到所有:"+user1);
        }

       //添加
        User user2=new User("my","34567");
        iUserDaos.addUser(user2);
        System.out.println("添加成功:"+user2);

        //删除
        int id=iUserDaos.deleteUser(25);
        System.out.println("删除:"+id);

       //修改
        User user3=new User(37,"修改","6666");
        iUserDaos.updateUser(user3);
        System.out.println("修改:"+user3);

        sqlSession.commit();
        sqlSession.close();
    }
}

源码:点击打开链接



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值