MyBatis(三)增删改查--基于接口

1.新建“动态web项目”,导入jar包,总体目录结构如下:
config文件是sources file类型。
这里写图片描述

2.User.java

package com.entity;

public class User {
    private int id;

    private String name;

    private int age;

    private String address;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
    }       
}

3.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>
    <typeAliases>
    <!-- 取别名 ,可要可不要-->
        <typeAlias type="com.entity.User" alias="User"/>
    </typeAliases>
    <environments default="development">
    <!-- development开发模式,work工作模式 -->
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
            <!--使用mysql数据库,数据库名test-->
                <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=""/>
            </dataSource>
        </environment>
    </environments>

    <!-- 注册映射文件 -->
    <mappers>
        <mapper resource="userMapper.xml"/>
    </mappers>
</configuration>

4.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="com.test.IUserMapper">
    <!-- 使用接口实现查询用户 ,id名就是IUserMapper接口的方法名,即id名与接口的方法名必须一致-->
    <select id="getUserById" parameterType="int" resultType="com.entity.User">
        select * from users where id=#{id}
    </select>

    <!-- 查询全部用户信息 -->
    <select id="getAllUser" resultType="User">
        select * from users
    </select>

    <!-- 新增用户信息 -->
    <insert id="insertUser" parameterType="User">
        insert into users(ID,NAME,AGE,ADDRESS) values(#{id},#{name},#{age},#{address})
    </insert>

    <!-- 删除用户信息 -->
    <delete id="deleteUserById" parameterType="int">
        delete from users where id=#{id}
    </delete>

    <!-- 更新用户信息 -->
    <update id="updateUserById" parameterType="User">
        update users set address=#{address} where id=#{id}
    </update>
</mapper>

5.IUserMapper.java

package com.test;

import java.util.List;

import com.entity.User;

public interface IUserMapper {
    //这里的方法名必须与userMapper.xml文件的相应的id名一一对应!!!!

    //根据id获取用户信息
    public User getUserById(Integer id);
    //获取全部用户信息
    public List<User> getAllUser();
    //根据id删除用户信息,执行成功就会返回1,也可以是void类型
    public Integer deleteUserById(Integer id);
    //根据id修改用户信息,执行成功就会返回1,也可以是void类型
    public Integer updateUserById(User user);
    //新增用户信息,执行成功就会返回1,也可以是void类型
    public Integer insertUser(User user);
}

6.TestMybatis.java

package com.test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

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 com.entity.User;

public class TestMybatis {
    //公共方法
    public SqlSessionFactory getsqlSessionFactory() throws IOException {
        //这里读取全局mybatis配置文件
        String resource="mybatis-config.xml";
        Reader reader=Resources.getResourceAsReader(resource);  
        return new SqlSessionFactoryBuilder().build(reader);
    }
        //由于sqlsession是线程不安全的,所以执行新操作时需要每次都获取

        //基于接口--查询全部用户信息
        @Test
        public void getAllUser() throws IOException {
            SqlSessionFactory sqlSessionFactory=getsqlSessionFactory();
            SqlSession openSession = sqlSessionFactory.openSession();
            IUserMapper mapper = openSession.getMapper(IUserMapper.class);
            List<User> users=mapper.getAllUser();
            openSession.close();
            System.out.println(users);
        }

        //基于接口--新增用户信息
        @Test
        public void insertUser() throws IOException {
            SqlSessionFactory sqlSessionFactory = getsqlSessionFactory();
            SqlSession sqlSession = sqlSessionFactory.openSession();
            IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);
            User user=new User();
            user.setId(1003);
            user.setName("fengjie");
            user.setAge(29);
            user.setAddress("China");
            int result = mapper.insertUser(user);
            //事务提交
            sqlSession.commit();
            //释放资源
            sqlSession.close();
            System.out.println(result);
        }

        //基于接口--根据id修改用户信息
        @Test
        public void updateUser() throws IOException {
            SqlSessionFactory sqlSessionFactory = getsqlSessionFactory();
            SqlSession sqlSession = sqlSessionFactory.openSession();
            IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);
            User user=new User();
            user.setId(1002);
            user.setAddress("shenzhen");
            int result = mapper.updateUserById(user);
            sqlSession.commit();
            sqlSession.close();
            System.out.println(result);

        }

        //基于接口--根据id删除用户信息
        @Test
        public void deleteUser() throws IOException {
            SqlSessionFactory sqlSessionFactory = getsqlSessionFactory();
            SqlSession sqlSession = sqlSessionFactory.openSession();
            IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);
            int result = mapper.deleteUserById(1003);
            //提交事务
            sqlSession.commit();
            //释放资源
            sqlSession.close();
            System.out.println(result);
        }


    //基于接口--根据id查询用户信息
    @Test
    public void selectIUser() throws IOException {
        //获取接口的实现类对象
        SqlSessionFactory sqlSessionFactory = getsqlSessionFactory();
        SqlSession sqlSession=sqlSessionFactory.openSession();
        IUserMapper iUserMapper= sqlSession.getMapper(IUserMapper.class);
        User user=iUserMapper.getUserById(1002);
        sqlSession.close();
        System.out.println(user);
    }
}

新增用户,console返回1
这里写图片描述

查询全部用户
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值