Mybatis实现CRUD

本文详细介绍了使用MyBatis框架实现数据库操作的CRUD方法,包括XML映射和注解方式,展示了如何进行数据的增删改查及模糊查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不多说,直接上代码:

xml实现Crud

接口:
package com.huihui.dao;

import com.huihui.entity.User;

import java.util.List;

public interface IUserDao {

    /*增*/
    void save(User user);

    /*删*/
    void delete(Integer id);

    /*改*/
    void update(User user);

    /*查*/
    List<User> findAll();

    /*模糊查询*/
    List<User> findAllByUsername(String name);
}

实体类:
public class User {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;// 这里省略get、set,构造方法。。。
IUserDao.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 名称空间,表示xml是哪一个接口的隐射-->


 <!--
     获取保存数据后数据库主键值
      <selectKey>标签完成
                   keyProperty: 把查询后的主键值赋给对象(parameterType)的哪个属性值
                   keyColumn: 表的主键字段名称
                   resultType: 返回主键值的类型
                   order: 查询主键值的语句在insert之前还是之后
     -->
<mapper namespace="com.huihui.dao.IUserDao">

    <insert id="save" parameterType="com.huihui.entity.User">
            <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
                SELECT LAST_INSERT_ID();
            </selectKey>
            insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
    </insert>


    <!--
      1. 添加: insert
          id: 方法名称
          parameterType: 输入参数类型   (可以省略的)
              如果Java对象,写对象的全名
              如果是集合,写集合里面的类型的全名即可
          #{username}: 有两层意思
                1) 和?一样占位
                2) 取parameterType对象的属性值 作为参数值


    -->
    <insert id="delete" parameterType="Integer">
        delete from user where Id = #{id}
    </insert>

    <update id="update" parameterType="com.huihui.entity.User">
        UPDATE  user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where Id = #{id}
    </update>



    <select id="findAllByUsername" resultType="com.huihui.entity.User">
        SELECT * from user where username LIKE #{username}
    </select>

    
    <resultMap id="userResultMap" type="com.huihui.entity.User">
        <id property="id" column="id_"/>
        <id property="username" column="username_"/>
        <id property="birthday" column="birthday_"/>
        <id property="sex" column="sex_"/>
        <id property="address" column="address_"/>
    </resultMap>

    <select id="findAll" resultMap="userResultMap">
        SELECT id id_, username username_,birthday birthday_,sex sex_,address address_ FROM USER;
    </select>
</mapper>
SqlMapConfig.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="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>


            <dataSource type="pooled">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/huihui/dao/IUserDao.xml"/>
    </mappers>

</configuration>

<!--加载接口的映射文件-->

测试类:
package com.huihui;

import com.huihui.dao.IUserDao;
import com.huihui.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.Before;
import org.junit.Test;

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

public class Test1 {
    IUserDao userDao = null;
    SqlSession sqlSession = null;



    @Before
    public void test1() throws IOException {
        //1,获取文件流
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");

        //创建sqlsession工厂构造器,是为了创建sqlsession的工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

        //根据工厂构造器,创建sqlsession对象
        SqlSessionFactory factory = builder.build(in);

        //根据sqlsession工厂,创建sqlSession对象
       sqlSession = factory.openSession();

        //1对dao的接口生成代理对象
       userDao = sqlSession.getMapper(IUserDao.class);

        //2查看接口代理
        System.out.println("查看接口代理:" + userDao.getClass());
    }


    @Test
    public void testSave(){

        User user = new User();
        user.setUsername("老黄老黄");
        user.setSex("男");
        System.out.println("保存前"+user);
        userDao.save(user);
        System.out.println("保存后"+user);

        sqlSession.commit();

    }


    @Test
    public void testDelete() {

       userDao.delete(62);
       sqlSession.commit();
    }

    /*改*/
    @Test
    public void testUpdate(){
        User user = new User();
// 一定要设置id,不然数据会全部被替换
        user.setId(60);
        user.setSex("男");
        user.setUsername("小妮妮");
        user.setAddress("隔壁");

        userDao.update(user);
        sqlSession.commit();
    }

    @Test
    public  void testFindAllByUsername(){
        //3执行代理方法
        List<User> list = userDao.findAllByUsername("%苍%");
//        sqlSession.commit();

        //4遍历数据
        for (User u:list){
            System.out.println(u);
        }
    }
    @Test
    public  void testFindAll(){
        //3执行代理方法
        List<User> list = userDao.findAll();
       sqlSession.commit();

        //4遍历数据
        for (User u:list){
            System.out.println(u);
        }

    }
}

Mybatis框架CRUD使用注解实现

IUserDao

package com.huihui.dao;

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

import java.util.List;

public interface IUserDao {

    /*增*/
    @Insert("insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})")
    void save(User user);


    /*删*/
    @Delete("delete from user where Id = #{id}")
    void delete(Integer id);

    /*改*/
    @Update("UPDATE  user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where Id = #{id}")
    void update(User user);

    /*查*/
    //查询所有
    @Results(
            {
                    @Result(property = "id",column = "id_",id = true),
                    @Result(property = "username",column = "username_"),
                    @Result(property = "birthday" ,column = "birthday_"),
                    @Result(property =  "sex",column = "sex_"),
                    @Result(property =  "address",column = "address_"),
            }
    )
    @Select("SELECT id id_,username username_,birthday birthday_,sex sex_,address address_ FROM USER;")
    List<User> findAll();
}

然后再修改SqlMapConfig.xml关联Dao接口!再

小技巧:
resultType: 表的字段名称和类的属性名称一致的情况下,完成对象的封装!!
resultMap:表的字段名称和类的属性名称在不一致的情况下,完成对象的封装!!或关联关系映射处理

此文仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值