mybatis的增删查

本文详细介绍了mybatis进行数据库操作的步骤,包括查询、增加和删除。首先,从创建数据库开始,配置UserDao及核心文件,接着在接口和XML文件中编写相应的方法和SQL语句。最后,在测试类中执行并展示查询、添加和删除的结果。
摘要由CSDN通过智能技术生成

1.mybatis的查询

先创建数据库

-- 创建数据库
create database mydb;
-- 使用数据库
use mydb;

-- 创建表
create table t_user
(
  uid int primary key auto_increment,
	username varchar(20),
	password varchar(20),
	phone varchar(11),
	address varchar(50)
);
insert into t_user(username,password,phone,address) value('张三','666','18965423548','南阳');
insert into t_user(username,password,phone,address) value('李四','333','18754263548','许昌');
insert into t_user(username,password,phone,address) value('小美','123','18565234759','信阳');

然后配置UserDao文件

<?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.qi.dao.UserDao">
    
</mapper>

配置核心文件连接数据库

<?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:指定配置的环境信息的id,表示默认连接该环境
    -->
        <environments default="mysql">
            <environment id="mysql">
                <!--配置事务的处理方式:模式使用JDBC的事务处理-->
                <transactionManager type="jdbc"></transactionManager>
                <!--数据源的默认type设置为pooled,表示使用连接池-->
                <dataSource type="pooled">
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
    </environments>
    <!--加载mapper配置文件-->
    <mappers>
        <mapper class="com.qi.dao.UserDao" />
    </mappers>
</configuration>

在接口UserDao中编写查询方法,然后在UserDao文件里编写查询语句

<?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.qi.dao.UserDao">
    <!--通过select标签进行查询
    id:映射接口的方法名
    parameterType:指定参数的类型(如果是集合类型只需要指定集合元素的类型即可)
    resultType:指定返回值的类型
    -->
    <select id="selectAll" resultType="com.qi.bean.User">
            select * from t_user;
    </select>
    
</mapper>

然后在测试类中进行测试

public class UserTest {
    InputStream stream=null;//字节输入流

    SqlSessionFactoryBuilder builder=null;//构造器对象

    SqlSessionFactory factory=null;//工厂对象

    SqlSession sqlSession=null;//sqlSession对象,用来完成jdbc操作

    UserDao userDao=null;//接口对象

    @Before
    public void init() throws IOException {
        //1.加载核心配置文件的字节输入流
        stream = Resources.getResourceAsStream("mybatis.xml");
        //2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
        builder=new SqlSessionFactoryBuilder();
        //3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
        factory=builder.build(stream);
        //4.通过工厂对象获取SqlSession对象----执行JDBC操作的
        sqlSession=factory.openSession();
        //5.通过SqlSession对象获取接口对应的代理对象
        userDao=sqlSession.getMapper(UserDao.class);
    }
    @Test
    public void testSelectAll() throws IOException {
        //6.通过代理对象执行查询方法
        List<User> userList = userDao.selectAll();
        //7.遍历集合
        for (User user : userList) {
            System.out.println(user);
        }
    }
    @After
    public void distory() throws IOException {
        //增删改是数据库完成的操作,增删改会把数据更新到缓存中,需要显示的执行提交操作,才会更新到数据库中
        sqlSession.commit();
        sqlSession.close();
        stream.close();
    }
}

然后查询结果

 2.mybatis的增加

在UserDao接口里进行编写添加方法

public interface UserDao {
    /**
     * 查询所有用户信息
     *
     */


    int add(User user);


}

然后在UserDao文件里进行编写添加语句

<?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.qi.dao.UserDao">
    <!--通过select标签进行查询
    id:映射接口的方法名
    parameterType:指定参数的类型(如果是集合类型只需要指定集合元素的类型即可)
    resultType:指定返回值的类型
    -->
    <insert id="add" parameterType="com.qi.bean.User">
        insert into t_user(username,password,phone,address) values(#{username},#{password},#{phone},#{address});
    </insert>
</mapper>

 在测试类里测试

public class UserTest {
    InputStream stream=null;//字节输入流

    SqlSessionFactoryBuilder builder=null;//构造器对象

    SqlSessionFactory factory=null;//工厂对象

    SqlSession sqlSession=null;//sqlSession对象,用来完成jdbc操作

    UserDao userDao=null;//接口对象

    @Before
    public void init() throws IOException {
        //1.加载核心配置文件的字节输入流
        stream = Resources.getResourceAsStream("mybatis.xml");
        //2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
        builder=new SqlSessionFactoryBuilder();
        //3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
        factory=builder.build(stream);
        //4.通过工厂对象获取SqlSession对象----执行JDBC操作的
        sqlSession=factory.openSession();
        //5.通过SqlSession对象获取接口对应的代理对象
        userDao=sqlSession.getMapper(UserDao.class);
    }
    

    @Test
    public void testadd() throws IOException {
        User user=new User();
        user.setUsername("mybatis");
        user.setPassword("333");
        user.setPhone("110");
        user.setAddress("github");
        //通过代理对象执行查询方法
        int n = userDao.add(user);
        if (n>0){
            System.out.println("添加成功!");
        }
    }


    @After
    public void distory() throws IOException {
        //增删改是数据库完成的操作,增删改会把数据更新到缓存中,需要显示的执行提交操作,才会更新到数据库中
        sqlSession.commit();
        sqlSession.close();
        stream.close();
    }
}

添加结果:

 3.mybatis的删除

在UserDao接口里进行编写删除方法

public interface UserDao {
    /**
     * 查询所有用户信息
     *
     */


    int delete(int uid);

}

然后在UserDao文件里进行编写删除语句

<?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.qi.dao.UserDao">
    <!--通过select标签进行查询
    id:映射接口的方法名
    parameterType:指定参数的类型(如果是集合类型只需要指定集合元素的类型即可)
    resultType:指定返回值的类型
    -->
    <delete id="delete" parameterType="int">
        delete from t_user where uid=#{uid};
    </delete>
</mapper>

在测试类里进行测试

public class UserTest {
    InputStream stream=null;//字节输入流

    SqlSessionFactoryBuilder builder=null;//构造器对象

    SqlSessionFactory factory=null;//工厂对象

    SqlSession sqlSession=null;//sqlSession对象,用来完成jdbc操作

    UserDao userDao=null;//接口对象

    @Before
    public void init() throws IOException {
        //1.加载核心配置文件的字节输入流
        stream = Resources.getResourceAsStream("mybatis.xml");
        //2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
        builder=new SqlSessionFactoryBuilder();
        //3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
        factory=builder.build(stream);
        //4.通过工厂对象获取SqlSession对象----执行JDBC操作的
        sqlSession=factory.openSession();
        //5.通过SqlSession对象获取接口对应的代理对象
        userDao=sqlSession.getMapper(UserDao.class);
    }

    @Test
    public void testdelete(){

        int n = userDao.delete(6);
        if (n>0){
            System.out.println("删除成功");
        }
    }
    @After
    public void distory() throws IOException {
        //增删改是数据库完成的操作,增删改会把数据更新到缓存中,需要显示的执行提交操作,才会更新到数据库中
        sqlSession.commit();
        sqlSession.close();
        stream.close();
    }
}

测试结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值