Mybaits学习总结-1

1. JDBC 使用步骤?

六步: 加载驱动、获取链接、创建声明、执行sql、获取结果集、关闭链接。

加载驱动三种方法:

Class.forName(DRIVER);

System.setProperty(“jdbc.drivers”,DRIVER);

new OracleDriver().connect(URL,prop);

2. JDBC的缺点?

3点:

·使用时连接,不使用时立即释放--解决:连接池

·硬编码,sql语句硬编码到java代码;preparedStatement设置参数硬编码--解决:将sql语句和占位符 全都放到 配置文件

·硬编码/重复操作,结果集获取表字段硬编码、手动赋值到对象属性-- 解决:将结果集自动映射为对象

3. 什么是Mybatis?

3点:

·开源的轻量级持久层框架,Apache的一个顶级项目;

·让程序员将主要精力放在sql上,mybatis提供自由灵活对象数据映射。

·将输入参数自动进行输入映射,将查询结果自动映射为Java对象。

4. 简述MaBatis 框架的组成?

5点:

SqlMapConfig.xml : MyBatis 的全局配置文件,配置数据源、事务等Mybatis运行环境。配置所有映射文件路径。

SqlSessionFactory : 会话工厂,通过

SqlSessionFactoryBuilder.build(Resources.getResourceAsStream(sqlMapConfig.xml));读取配置文件创建会话工厂。

SqlSession : 会话,面向用户(程序员)的接口,用来操作数据库(增删改查)

Executor : 执行器,一个接口(基本执行器,缓存执行器)。SqlSession内部通过它来执行数据库操作的

MappedStatement : 底层封装对象,存储sql语句,封装输入参数,结果类型。所以<select id=”findById”> 中的id 也叫 statement id

补充:(备忘笔记)

Mybatis使用基本流程: 

写pojo类对应的Mapper接口和Mapper.xml(SQL语句);然后写mybatis-config.xml配置文件(缓存,数据库,以及mapper.xml路径);最后在程序中通过 SqlSessionFactory生成的SqlSession来获取Mapper接口的代理类,操作数据库。


5. 配置文件的写法你还能记得么?

不用记啊,XML基本写法就OK

<?XML version=”1.0” encoding=”utf-8”?>

<!DOCTYPE configuration PUBLIC “别名” “约束地止”>

SqlMapConfig.xml 约束是 config.dtd

Mapper.xml 约束是 mapper.dtd

示例:

<?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>
		<!-- 全局配置参数,需要时设置 -->
<!-- 	<settings> -->
		<!-- 延迟加载 -->
		<!-- <setting name="lazyloadingEnabled" value="true"></setting> -->
		<!-- 将积极加载改为消极加载,即 按需加载 -->
		<!-- <setting name="aggressiveLazyLoading" value="false"/> -->
		<!-- 开启二级缓存 -->
		<!-- <setting name="cacheEnabled" value="true"/> -->
<!-- 	</settings> -->
	<!-- 给 类起别名 -->
	<typeAliases>
		<package name="com.gc.model"/>
		<!-- <typeAlias type="com.briup.pojo.Student" alias="Student" /> -->
	</typeAliases>
	
	<!-- 数据库连接配置 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<!-- <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> 
				<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" />  -->
				<property name="driver" value="com.mysql.jdbc.Dirver" /> 
				<property name="url" value="jdbc:mysql://localhost:3306/gcbs" /> 
				<property name="username" value="test" />
				<property name="password" value="test" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- mapper.xml 路径配置 -->
	<mappers>
		<!-- <mapper resource="com/briup/mappers/StudentMapper.xml"/> -->
		<!-- 和spring整合后,可以通过 mybatis-spring.jar包中的mapper扫描器 配置 -->
		<package name="com.gc.mapper"/>
	</mappers>
</configuration>
<?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="com.gc.mapper.StudentMapper">
    <select id="findStudentById" resultType="Student"
        parameterType="int">
        select * from t_student where id=#{id}
    </select>
</mapper>

6. Mybatis pojo mapper映射文件,写sql语句的输入时 #{value} ${value} 有何区别?

#{ value } :表示占位符,在paramterType为简单类型或String时 可以自定义括号内变量名,如#i{id}也可以。若为插入操作#{ }中写po类的属性名

${value} :表示 拼接字符串,在parameterType为简单 数据类型或者string时 只能用value

SELECT * FROM T_USER WHERE username LIKE ‘%${value}%’ 

因为拼接字符串可导致sql注入,所以不推荐用${ }

7. 测试基本流程代码: (补充:这流程是Mybatis不使用Mapper而用原始Dao操作的)

@Test
	public void findUserById() throws IOException {
		//1. 创建会话工厂,传入sqlMapConfig.xml的配置信息
		String resource = "SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//2. 通过工厂得到SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3. 通过sqlSession 进行数据库操作
		User user = sqlSession.selectOne("usermapper.findUserById", 1);
                //StudentMapper sm = (StudentMapper)sqlSession.getBean(StudentMapper.class);
		System.out.println(user.getPhone());
		sqlSession.close();	
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值