Mybatis CRUD 操作

本文介绍了如何使用Mybatis进行数据库查询操作。内容涉及项目结构,包括userMapper.xml文件,以及Mybatis配置文件config.xml的设置。同时,文章还展示了测试程序的运行流程。

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


前置内容  =>  Mybatis查询数据库


项目结构:




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的值设置成包名+sql映射文件名,保证namespace取值唯一 -->
<mapper namespace="com.cheese.mapping.userMapper">
    <!-- id属性值必须唯一,不能重复
         parameterType设置查询语句接受的参数类型(userID 的数据类型)
         resultType设置查询返回的结果类型
         resultType="com.cheese.pojo.User"表示 t_user每行记录被封装成一个User对象
    -->
    
    <!-- 根据userid查询User对象    -->
    <select id="getUser" parameterType="int" resultType="com.cheese.pojo.User">
        select * from t_user where userid=#{userID}
    </select>
    
    <!-- 查询多个User对象    -->
    <select id="getUserList" resultType="com.cheese.pojo.User">
        select * from t_user where userid &lt;=3
    </select>
    
    <insert id="addUser" parameterType="map">
        insert into t_user(userid,username,password,name) 
          values(#{userID},#{userName},#{password},#{name})       
    </insert> 	
    
    <update id="updateUser" parameterType="map">
        update t_user set name=#{name},password=#{password} where userid=#{userID}
    </update>    
    
    <delete id="deleteUser" parameterType="map">
        delete from t_user where userid=#{userID}
    </delete>    
</mapper>




User 实体类:

package com.cheese.pojo;

public class User
{
	private int userID;
    private String userName;//用户名
    private String password;
    private String name;//全名

	public User()
    {
    }

	
    public int getUserID() {
		return userID;
	}
    
	public void setUserID(int userID) {
		this.userID = userID;
	}

	public String getUserName()
    {
        return userName;
    }

    public void setUserName(String userName)
    {
        this.userName = userName;
    }

    public String getPassword()
    {
        return password;
    }

    public void setPassword(String password)
    {
        this.password = password;
    }
    
    public String getName() {
		return name;
	}

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



自定义Mybatis 工具类:

package com.cheese.test;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SessionUtil {
    private static final String resource = "config.xml";//mybatis配置文件        
    private static InputStream is;  
    private static SqlSessionFactory sessionFactory;	
	static {
        is = SessionUtil.class.getClassLoader().getResourceAsStream(resource);//加载mybatis配置文件
        //创建sqlSession工厂
        sessionFactory = new SqlSessionFactoryBuilder().build(is);    		
	}
	
	public static SqlSession getSession() {
        //创建sqlSession
        SqlSession session = sessionFactory.openSession();		
        return session;
	}
}




测试程序:

package com.cheese.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.cheese.pojo.User;
import org.junit.Test;
public class TestCRUD{	

    @Test
    public void addUser(){
        SqlSession sqlSession = SessionUtil.getSession();
        /**
         * 映射sql的字符串,
         * com.cheese.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
         * addUser是insert标签的id属性值
         */
        String insertStr = "com.cheese.mapping.userMapper.addUser";//namespace + id 定位到要执行的sql语句
        User user = new User();
        user.setUserName("Jane");
        user.setPassword("a111");
        user.setName("Jane Austen");
        //插入
        int rowCount = sqlSession.insert(insertStr,user);
        sqlSession.commit();//提交事务
        sqlSession.close();//关闭session
        System.out.println("新增记录数:" + rowCount);
    }
    
    @Test
    public void getUserList(){
        SqlSession sqlSession = SessionUtil.getSession();
        String getListStr = "com.cheese.mapping.userMapper.getUserList";
        //执行查询操作,将查询结果自动封装成List<User>返回
        List<User> userList = sqlSession.selectList(getListStr);
        sqlSession.close();
        System.out.println(userList.get(1).getName());//打印第个User对象的name属性值
    }    
    
    @Test
    public void updateUser(){
        SqlSession sqlSession = SessionUtil.getSession();
        String updateStr = "com.cheese.mapping.userMapper.updateUser";
        User user = new User();
        user.setUserID(3);
        user.setName("匹特");
        user.setPassword("p111");
        //修改
        int rowCount = sqlSession.update(updateStr,user);
        sqlSession.commit();
        sqlSession.close();
        System.out.println("被修改记录数:" + rowCount);
    }
    
    @Test
    public void deleteUser(){
        SqlSession sqlSession = SessionUtil.getSession();
        String deleteStr = "com.cheese.mapping.userMapper.deleteUser";
        //删除
        int rowCount = sqlSession.delete(deleteStr,2);
        sqlSession.commit();
        sqlSession.close();
        System.out.println("被删除记录数:" + rowCount);
    }  
}





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>
    <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://localhost:3306/base6"/>
                <property name="username" value="btsuser" />
                <property name="password" value="b111" />
            </dataSource>
        </environment>              
    </environments>
        
    <mappers>
        <!-- 注册userMapper.xml文件  -->
        <mapper resource="com/cheese/mapping/userMapper.xml"/>

    </mappers>        
</configuration>



运行测试:














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值