mybatis入门

mybatis

mybatis是一个数据库持久层的框架,基于orm思想

搭建mybatis环境

  1. 创建一个maven项目
  2. 在pom.xml文件中导入jar
  3. 准备mybatis的核心配置文件
  4. 准备映射文件 Mapper.xml

pom.xml文件的配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.soft863</groupId>
	<artifactId>mybatis3.4_01</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<!--mybatis jar mysql -->
	<dependencies>
		<dependency>
		<!--测试包-->
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!--mybatis核心包-->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.4</version>
		</dependency>
		<!--java连接mysql数据库-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.5</version>
		</dependency>
		
		<!-- 处理日志的 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.8</version>
		</dependency>
	</dependencies>
</project>

mybatis的核心配置文件

<?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>
		<typeAliases>
			<!-- 给包下面的类批量起别名  默认User user-->
			<package name="com.soft.bean"/>
			<!-- 为特定的类起别名 -->
			<!-- <typeAlias type="com.soft.bean.User" alias="user"/> -->
		</typeAliases>	
			<!-- 配置连接数据库的相关环境-->
		<environments default="development">
			<environment id="development">
				<!-- 事务管理器   使用jdbc去提交事务 -->
				<transactionManager type="JDBC"></transactionManager>
				<!-- 数据源  mybatis提供三种数据源类型 POOLED ,UNPOOLED, JNDI -->
				<!-- pooled表示支持jdbc数据源连接 -->
				<!-- unpooled表示不支持jdbc数据源连接 -->
				<!-- jndi表示支持外部的数据源连接 -->
				<dataSource type="POOLED">
					<property name="driver" value="com.mysql.jdbc.Driver"/>
					<property name="url" value="jdbc:mysql://localhost:3306/test"/>
					<property name="username" value="root"/>
					<property name="password" value="123456"/>
				</dataSource>
			</environment>
		</environments>
		<!-- 加载映射文件 -->
		<mappers>
			<mapper resource="com/soft/dao/Mapper.xml"/>
		</mappers>
	</configuration>
	
mapper映射文件
<?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">
	<!-- 命名空间 -->
	<mapper namespace="demo">
	<!-- id 唯一性标识   -->
	<!-- parameter传入参数的类型  -->
	<!-- resulType返回值类型  这里因为配置文件中起了别名所以是user(com.soft.bean.User) -->
		<select id="selectbyid" parameterType="int" resultType="user">
			select * from s_user where id = #{id}
		</select>	
	</mapper>

测试类

@Test
	public void testSqlSession()
	{
		InputStream in;
		try
		{
			//加载核心配置文件
			in = Resources.getResourceAsStream("mybais-config.xml");
			//获取SqlSessionFactory
			SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
			//获取SqlSession openSession(true/false)参数默认是false,true表示开启事务
			SqlSession sqlSession = sessionFactory.openSession(true);
			int id = 1;
			//demo.selectbyid 命名空间+唯一标识   id是要传入的参数
			User user = sqlSession.selectOne("demo.selectbyid", id);
			System.out.println(user);
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		
	}

mybatis中传参数

1.直接传参
2.传一个实体类,占位符里面的形参名字对应实体类的属性
3.如果传参是一个map,对应的是map的key

mybatis缓存 懒加载

<!-- 开启延迟加载 -->
    <settings>
        <!-- lazyLoadingEnabled:延迟加载启动,默认是false -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- aggressiveLazyLoading:积极的懒加载,false的话按需加载,默认是true -->
        <setting name="aggressiveLazyLoading" value="false"/>
         
        <!-- 开启二级缓存,默认是false -->
        <setting name="cacheEnabled" value="true"/>
    </settings>

mybatis一级缓存作用域是一个SqlSession,默认开启一级缓存。在同一个sql Session中执行相同的查询sql,第一次会查询数据库,并写到缓存,第二次会直接从缓存里取。当执行sql时,两次查询中间执行了insert、update、delete则sqlSqssion的缓存清空。(Mybatis的内部缓存使用一个HashMap,key为hashcode+statementId+sql语句。Value为查询出来的结果集映射成的java对象。)

mybatis二级缓存作用域是同一个namespace下的mapper映射文件的内容,多个sqlSession共享。mybatis需要手动设置开启二级缓存。
开启二级缓存
1、 在核心配置文件SqlMapConfig.xml中加入以下内容(开启二级缓存总开关):
cacheEnabled设置为 true
2、在映射文件中,加入以下内容,开启二级缓存:
实现序列化
由于二级缓存的数据不一定都是存储到内存中,它的存储介质多种多样,所以需要给缓存的对象执行序列化。
如果该类存在父类,那么父类也要实现序列化。
禁用二级缓存
该statement中设置userCache=false可以禁用当前select语句的二级缓存,即每次查询都是去数据库中查询,默认情况下是true,即该statement使用二级缓存。
刷新二级缓存

<select id="" paramaterType="" resultTpet="" flushCache="true" >...</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值