mybatis 第一个程序---用户查询

本文详细介绍了使用MyBatis框架进行数据库操作的基本流程,包括配置文件设置、映射文件编写及简单查询操作。

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

需求:

1.查询一个用户

2.查询多个用户(List)



Mybatis开发步骤:

编写SqlMapConfig.xml配置文件(配置数据源和mapper映射文件)


编写mapper.xml映射文件,在里面编写statement(包括sql语句,输入和输出,参数类型)


编写程序

获取SqlSessionFactory

通过SqlSessionFactory获取SqlSession

通过SqlSession操作数据库(调用上面定义的statement)


第一步:config/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>
	
	<!-- 配置数据源 -->
	<!-- 和spring整合后 environments配置将废除-->
	<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/mybatis?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 配置mapper映射文件 -->
	<mappers>
		<mapper resource="sqlmap/User.xml"/>
	</mappers>
	
</configuration>


加入config/log4j.properties可以在控制台上打印sql语句出来



第二步:创建实体类User.java



第三步:config/sqlmap/User.xml下配置User.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动态代理方法,这里就需要配置mapper接口地址-->
<mapper namespace="test">
	
	<!-- 
	
		根据用户的ID查询一条记录(返回单条记录) 
		
		
		select标签表示sql查询,内容会封装到Mapped Statement中,
		可以将这个select标签称为一个Statement
		id属性:Statement的唯一标识
		
		#{}:表示一个占位符,可以避免sql注入
		${}:表示一个拼接符
		
		parameterType:表示输入的类型,就是占位符要输入什么类型
		resultType:表示输出的结果集的类型,select查询的字段名和resultType属性名一致,才能映射成功
		#{id}:id表示parameter输入参数的变量
		
	-->
	<select id="findUserById" parameterType="int" resultType="com.mo.pojo.User">
		SELECT * FROM USER  WHERE id = #{id}
	</select>
	
	<!-- 
		根据名字查询用户列表(返回List集合) 
		
		不管返回的结果是几条,resultType都是指定单条记录映射java对象的类型
		
		${}:表示sql拼接符,相当于sql字符串的拼接,无法避免sql注入
		${value}:value表示parameter输入参数的变量,使用${},变量名必须使用value
				直接将value拼接到sql中,value不作任何的修饰
				
			'%${value}%' : 可以这样使用修饰
				客户端输入 张 
				sql会拼接为 %张%
			
	-->
	<select id="findUserListByName" parameterType="String" resultType="com.mo.pojo.User">
		SELECT * FROM USER WHERE username LIKE '%${value}%'
	</select>
	
</mapper>


第四步:测试单元


package com.mo;

import java.io.IOException;
import java.io.InputStream;
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.mo.pojo.User;

public class MybatisTest {

	@Test
	public void test() throws IOException{
		//1.加载配置文件
		String resource = "SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		
		//2.根据配置文件创建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//3.根据SqlSessionFactory创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		
		//4.查询返回多条
		/**
		 *  通过sqlSession的API对数据库进行操作
		 *	第一个参数是statement:指定mapper映射文件中statement的id
		 *		指定的时候加上statement所属的空间名称
		 * 	第二个就是给参数赋值	
		 * 
		 * 	selectOne返回的是单条的记录,如果select返回多条记录(list集合),selectOne会报错
		 * 	
		 * 	返回值得类型就是映射文件中的resultType
		 */
		User user = sqlSession.selectOne("test.findUserById", 1);
		
		
		List<User> list = sqlSession.selectList("test.findUserListByName","张");
		
		System.out.println(list.size());
		
		System.out.println(user);
		
		//5.关闭sqlSession
		sqlSession.close();
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值