第一个MyBatis程序

导入jar包

MyBatis核心jar包和所依赖的jar包,mysql驱动包,junit测试的包

定义实体类

以后对于id的定义为Integer,方便判断为空
属性和成员变量的区别
属性:get或set方法的方法名去掉set或get后,剩余部分首字母小写,就是属性,大多数情况下看到的,即使成员变量,又是属性,成员变量是私有的,属性是公开的。

建立数据库表

关于数据库表的导入和导出(navicat)
导出:右击数据库,点击转储sql文件,生成以库名.sql的sql文件
导入:选择一个数据库,点击运行sql文件,生成相应的表,也可以在别的数据库中导入相应的表,然后再导出时就是该库的库名.sql;
如果想要直接在navicat创建该库,并导入该库中的sql文件,有两种方式,方式一:在Navicat中建立对应的数据库,库名一致,然后导入。方式二:打开已导出的sql文件,在开头写上创建数据库的语句:
create database if not exists 库名;
use 库名;

定义dao接口和映射文件

映射文件名随意,放在dao包中
添加约束
解决xml没有自动提示
为了解决在没有联网时,xml没有自动提示,首先将mybatis-3-config.dtd和mybatis-3-mapper.dtd下载到本地,
在这里插入图片描述
上述配置的意思是:当从网络上寻找mybatis-3-mapper.dtd,从本地上寻找。
namespace的作用
用于区分不同命名空间中的同名SQL映射的id,可以在传递参数时使用命名空间丶id,也可以将两个不同命名空间的相同的id改成不同

<?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">
 <mapper namespace="test">
 	<insert id="insertStudent">
 		insert into student(name, age, score) values(#{name}, #{age}, #{score});
 	</insert>
 </mapper>
定义主配置文件

配置文件中的符号
+:表示大于等于一
?:最多有一个(小于等于一)
*:大于等于零
什么符号也没有:有且仅有一个
两个标签之间用逗号隔开:表示是有顺序的
environments 的理解
为了操作的方便,environments标签中可以写多个environment,而每个environment都有id属性,environments有default属性,default属性的值是environment的id,就是选择运行环境是哪一个,环境可以有多个,比如一个是测试环境,一个是上线以后的环境,到时执行方便环境之间的切换,只需要将其id赋值给default。

<?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>
 	<properties resource="jdbc.properties"></properties>
 	<!-- <typeAliases>
 		<package name="com.jpg.beans"/>
 	</typeAliases> -->
 	<environments default="insertEM">
 		<environment id="insertEM">
 			<transactionManager type="JDBC"></transactionManager>
 			<dataSource type="POOLED">
 				<property name="driver" value="${jdbc.driver}"/>
 				<property name="url" value="${jdbc.url}"/>
 				<property name="username" value="${jdbc.user}"/>
 				<property name="password" value="${jdbc.password}"/>
 			</dataSource>
 		</environment>
 	</environments>
 	
 	<mappers>
 		<mapper resource="com/jpg/dao/mapper.xml"/>
 	</mappers>
 </configuration>
定义dao实现类

获取SqlSession对象:SqlSession对象有SqlSessionFactory对象的openSession方法创建,SqlSessionFactory对象由SqlSessionFactoryBuilder的build方法创建
以插入为例,在执行sqlSession.insert(参数1,参数2);
参数1表示映射文件中insert标签的id,参数2表示需要传递的参数,在映射文件中,parameterType的值是参数2的类型

insert into student(name, age, score) values(#{name}, #{age}, #{score});

其中#{}中的内容是传过来的参数的属性名,因为底层会利用反射,根据这些属性名改装成get方法,从而获取属性的值

定义工具类
public class MyBatisUtil {
	private static SqlSessionFactory sqlSessionFactory;
	public static SqlSession getSqlSession() {
		try {
			InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
			if (sqlSessionFactory == null) {
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			}
			return sqlSessionFactory.openSession();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 中使用临时表的方式和在普通 SQL 语句中使用临时表的方式是一样的。 首先需要在 SQL 语句中创建临时表,然后再进行相关操作。下面以 MySQL 数据库为例,演示如何在 MyBatis 中使用临时表。 1. 创建临时表 在 MySQL 中,可以使用以下语句创建临时表: ```sql CREATE TEMPORARY TABLE temp_table ( id INT PRIMARY KEY, name VARCHAR(20) ); ``` 2. 在 MyBatis 中使用临时表 首先,在 MyBatis 的 Mapper 文件中定义 SQL 语句,并将创建临时表的 SQL 语句和相关操作的 SQL 语句写在一起,例如: ```xml <mapper namespace="com.example.mapper.TempTableMapper"> <select id="queryTempTable" resultType="java.util.Map"> <![CDATA[ CREATE TEMPORARY TABLE temp_table ( id INT PRIMARY KEY, name VARCHAR(20) ); INSERT INTO temp_table (id, name) VALUES (1, '张三'); INSERT INTO temp_table (id, name) VALUES (2, '李四'); SELECT * FROM temp_table; ]]> </select> </mapper> ``` 在上面的例子中,先创建了一个临时表 `temp_table`,然后插入了两条数据,最后查询了整个表。 3. 调用 Mapper 方法执行 SQL 语句 在 Java 代码中,调用 Mapper 方法执行 SQL 语句即可,例如: ```java public interface TempTableMapper { List<Map<String, Object>> queryTempTable(); } public class MyBatisTest { public static void main(String[] args) { SqlSession sqlSession = MyBatisUtil.getSqlSession(); TempTableMapper tempTableMapper = sqlSession.getMapper(TempTableMapper.class); List<Map<String, Object>> resultList = tempTableMapper.queryTempTable(); System.out.println(resultList); sqlSession.close(); } } ``` 最后,执行 Java 代码即可看到查询结果。需要注意的是,在 MyBatis 中创建的临时表只在当前的会话中存在,在会话关闭时会自动删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值