MyBatis深入学习(2)简单的CRUD操作

Mybatis的CRUD

在Dao中声明需要的操作方法

package com.tianqicode.dao;

import com.tianqicode.domain.User;

import java.util.List;

public interface UserDao {

    List<User> findAll();

    void save(User user);

    void update(User user);

    void delete(Integer id);

    User findOne(int id);

    List<User> findByName(String name);
}

在mapper配置文件中准备相应的sql语句以及其他的配置
(注:如果插入MySQL时出现乱码在配置文件application.yml中连接数据库的地址url后面加上characterEncoding=utf8即可)

<?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中填写UserDao的全限定类名 -->
<mapper namespace="com.tianqicode.dao.UserDao">

    <!-- 配置查询所有,id属性的取值必须与dao接口的方法同名,resultType属性指明返回类型 -->

    <!-- resultType属性中准备返回类型的全限定类名 -->
    <select id="findAll" resultType="com.tianqicode.domain.User">
        select * from user
    </select>

    <!-- parameterType属性中准备参数对象的全限定类名 -->
    <select id="findOne" resultType="com.tianqicode.domain.User" parameterType="java.lang.Integer">
        select * from user where id=#{id}
    </select>

    <!-- 模糊查询需要在调用查询方法时填写通配符 -->
    <select id="findByName" resultType="com.tianqicode.domain.User" parameterType="java.lang.String">
        select * from user where userName like #{name}
    </select>

    <insert id="save" parameterType="com.tianqicode.domain.User">
        insert into user(username,birthday,sex,address) values (#{userName},#{birthday},#{sex},#{address})
    </insert>

    <update id="update" parameterType="com.tianqicode.domain.User">
        update user set username=#{userName}, birthday=#{birthday}, sex=#{sex}, address=#{address} where id=#{id}
    </update>

    <delete id="delete" parameterType="java.lang.Integer">
        delete from user where id=#{id}
    </delete>
</mapper>

准备测试类,在执行增删改操作时需要手动提交事务

package com.tianqicode;

import com.tianqicode.dao.UserDao;
import com.tianqicode.domain.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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.Date;
import java.util.List;

public class test {

    private SqlSession session;
    private UserDao userDao;
    private InputStream in;
    
    @Before
    public void init() throws Exception{
        //1、读取配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2、创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3、使用工厂生产SqlSession对象
        session = factory.openSession();
        //4、使用SqlSession创建Dao代理对象
        userDao = session.getMapper(UserDao.class);
    }

    @After
    public void destroy() throws Exception{
        //6、释放资源
        session.close();
        in.close();
    }

    @Test
    public void testSelect() {

        System.out.println("########查询所有########");
        List<User> users = userDao.findAll();

        for (User user : users) {
            System.out.println(user);
        }
        System.out.println("########查询一个########");

        System.out.println(userDao.findOne(1));

        System.out.println("########模糊查询########");

        List<User> usersByNames = userDao.findByName("%A%");
        for (User userByName : usersByNames) {
            System.out.println(userByName);
        }

    }

    @Test
    public void testSave() {

        User user = new User();

        user.setUserName("AA");
        user.setBirthday(new Date());
        user.setAddress("科大");
        user.setSex("男");
        user.setId(6);
        userDao.save(user);

        session.commit();


        System.out.println("###################################");

        List<User> afterUsers = userDao.findAll();

        for (User afterUser : afterUsers) {
            System.out.println(afterUser);
        }

    }

    @Test
    public void testUpdate() {
        User user = new User();

        user.setUserName("AA");
        user.setBirthday(new Date());
        user.setAddress("科大");
        user.setSex("男");
        user.setId(6);
        userDao.update(user);
        session.commit();
    }

    @Test
    public void testDelete() {

        userDao.delete(5);
        session.commit();
    }
}

发布了30 篇原创文章 · 获赞 2 · 访问量 623

猜你喜欢

转载自blog.csdn.net/qq_43585377/article/details/102794505