Mybatis实现数据的增删改查

首先在pom.xml中加入依赖

       
         <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!-- 不写版本号会识别不出SqlSessionFactory-->

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

 然后在resource中建立一个Configuration.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>
   <!-- mybatis别名定义  alias别名名称,用package的别名就是包下实体类的名称-->
       <!--第二种方法更好-->

     <typeAliases>
       <!--<typeAlias type="com.lixin.mybatis.User" alias="User"/>-->
        <package name="com.lixin.mybatis"/>
    </typeAliases>

    <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://127.0.0.1:3306/test" />
                <property name="username" value="root"/>
                <property name="password" value="115600LX"/>
            </dataSource>
        </environment>
    </environments>

    <!-- mybatis的mapper文件,每个xml配置文件对应一个接口 -->
    <mappers>
        <!-- 注册自定义的映射文件 -->
        <mapper resource="mappers/user.xml"/>
    </mappers>
</configuration>

创建实体类User

package com.lixin.mybatis;

public class User {
    private int id;
    private String username;
    private int sex;
    private int age;

    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 int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }
}

建立resource-mappers-user.xml实现对数据的增删改查(映射文件)

在mybatis中,映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。-------Mapper文件

<?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="com.lixin.mybatis.IUserOperaton">

    
    <select id="findUserById" parameterType="int"  resultType="User">
        SELECT * FROM user1 WHERE id = #{id}
    </select>

    <select id="findAllUser" resultType="User">
        SELECT * FROM user1;
    </select>

    <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
        insert into user1(id,username,sex,age) values (#{id},#{username},#{sex},#{age})
    </insert>

    <delete id="deleteUser" parameterType="int">
        delete from user1 where id=#{id}
    </delete>
</mapper>

创建接口类IUserOperation

IUserOperation为操作接口,函数名和mybatis的xml配置文件中的操作id名对应。

package com.lixin.mybatis;

import java.util.List;

public interface IUserOperaton {
    public User findUserById(int id);

    public List<User>findAllUser();

    public void addUser(User user);

    public void deleteUser(int id);
}

编写Mybatis工具类Util

用静态代码块进行创建SqlSessionFactory,只在类加载时创建一次,保证了整个程序运行时只有一个工厂实例。

 

package com.lixin.mybatis;
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 java.io.InputStream;
import java.io.Reader;
import java.util.List;

public class Util {
    private static SqlSessionFactory sqlSessionFactory;
    private static Reader reader;
    private User user;
    private static int Ret;

    //从xml中获取sqlSessionFactory
    // 创建sqlSessionFactory对象,因为整个应用程序只需要一个实例对象,故用静态代码块
    static {
        try {
            Reader reader = Resources.getResourceAsReader("Configuration.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            SqlSession session = sqlSessionFactory.openSession();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //返回SessionFactory
    public static SqlSessionFactory getSqlSessionFactory() {
        return sqlSessionFactory;
    }

    //返回Session;
    public static SqlSession getSession() {
        return sqlSessionFactory.openSession();
    }

  /*
       isAutoCommit:
       true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
       false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()
   */
  public static SqlSession getSqlSession(boolean isAutoCommit) {
      return getSqlSessionFactory().openSession(isAutoCommit);
  }

}

测试类--Test

package com.lixin.mybatis;

import org.apache.ibatis.session.SqlSession;

import java.util.ArrayList;
import java.util.List;

public class Test {

    public void findAllUsers(){
        SqlSession sqlSession =Util.getSqlSession(true);
        IUserOperaton usermapper=sqlSession .getMapper(IUserOperaton.class);
        List<User>users=usermapper .findAllUser() ;
        for(User u:users ){
            System.out .println("ID:"+u.getId() +";Usernamr:"+u.getUsername() +";Sex:"+u.getSex() +";Age:"+u.getAge() );
        }
        sqlSession .close() ;
    }

    public void addUser(){
        SqlSession sqlSession =Util.getSqlSession(true);
        IUserOperaton usermapper=sqlSession .getMapper(IUserOperaton.class);
        User newuser =new User() ;
        newuser .setUsername("李鑫");
        newuser .setAge(18);
        newuser.setSex(2);
        usermapper.addUser(newuser );
        sqlSession .close() ;
    }

    public void deleteUser(int id){
        SqlSession sqlSession =Util.getSqlSession(true);
        IUserOperaton usermapper=sqlSession .getMapper(IUserOperaton.class);
        usermapper .deleteUser(id);
        sqlSession .close() ;
    }


    public void updateUser(){
        SqlSession sqlSession =Util.getSqlSession(true);
        IUserOperaton usermapper=sqlSession .getMapper(IUserOperaton.class);
        User newuser=new User() ;
        newuser.setId(1);
        newuser .setSex(1) ;
        newuser .setUsername("秦松");
        newuser .setAge(22);
        usermapper .updateUser(newuser );
        sqlSession .close() ;


    }
}

主函数

package com.lixin.mybatis;

import org.apache.ibatis.session.SqlSession;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

@SpringBootApplication
public class MybatisApplication {
    public static void main(String[] args) {
        Test test=new Test() ;
        test.findAllUsers() ;//查询所有User
        test.addUser() ;//新增User
        test.deleteUser(3);//根据id号删除User
        test.updateUser() ;//更新User信息
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值