Mybatis框架学习笔记 lesson1
2016-09-06 15:22
337 查看
Mybatis
操作数据库 ORM框架(配置映射 输入参数 输出参数映射)编写sql语句, sql语句----方法映射
JDBC 返回的是结果集
Mybatis: 返回的是对象
引入JAR包
asm-3.3.1.jar
cglib.2.2.2.jar
commons-logging-1.1.1.jar
javassist-3.17.1.-GA.jar
log4j-1.2.17.jar
mybatis-3.2.0.jar
mysql-connctor-java-5.1.16-bin.jar
slf4j-api-1.7.2.jar
slf4j-log4j12-1.7.2.jar
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>
<!-- 加载.properties属性文件 指定文件路径 -->
<properties resource="jdbc.properties"/>
<!-- 给类型 定义别名 -->
<typeAliases>
<typeAlias type="entity.Dept" alias="d"/>
<!-- 如果类名很多 都需要起别名 可以指定包名进行全包扫描 别名默认就是类名或者类名小写都可以 -->
<!-- <package name="entity"/> -->
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<!-- 指定事务的类型 JDBC事务 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源连接池 -->
<dataSource type="POOLED">
<property name="url" value="${url}"/>
<property name="driver" value="${driver}"/>
<property name="username" value="${user}"/>
<property name="password" value="${pwd}"/>
</dataSource>
</environment>
<environment id="oracle">
<!-- 指定事务的类型 JDBC事务 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源连接池 -->
<dataSource type="POOLED">
<property name="url" value="jdbc:oracle:thin@localhost:1521:XE"/>
<property name="driver" value="jdbc.oracle.driver.OracleDriver"/>
<property name="username" value="system"/>
<property name="password" value="tiger"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 引入映射文件 -->
<!--
如果Mapper代理接口名和Mapper映射文件同名且在同一个位置下
这里可以使用全包扫描,将指定的包下的所有映射文件进行加载 不需要一一引入
<package name="mapper"/>
-->
<mapper resource="entity/DeptMapper.xml"/>
</mappers>
</configuration>
DeptMapper.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:命名空间 修饰id的 -->
<mapper namespace="mybatis">
<!--输入参数类型:parameterType
如果是对象类型:占位符#{} 中就必须用 属性名 eg: #{dno}
如果是普通类型(基本类型+String) #{}中可以写任何值 一般建议用value
-->
<insert id="insertDept" parameterType="d">
insert into dept(dno,dname,loc) values(#{dno},#{dname},#{loc})
</insert>
<!--
resultType:输出映射(返回结果映射)
select * 的一条记录 封装成一个什么类型的对象
-->
<select id="selectOne" parameterType="int" resultType="d">
select * from dept where dno=#{aaaaaa}
</select>
<!--
resultType:输出映射(返回结果映射)
select * 的一条记录封装成一个什么类型的对象
-->
<select id="selectAll" resultType="d">
select * from dept
</select>
<delete id="deleteOne" parameterType="int">
delete from dept where dno=#{value}
</delete>
<update id="updateOne" parameterType="entity.Dept">
update dept set dname=#{dname},loc=#{loc} where dno=#{dno}
</update>
<resultMap type="d" id="myResultMap">
<id column="_dno" property="dno"/>
<result column="_name" property="dname"/>
<result column="_loc" property="loc"/>
</resultMap>
<!-- 如果 字段类型和属性类型一致 就可以成对象类型
如果字段类型和属性类型不一致 就不会映射成对象类型
可以通过resultMap来 配置属性和字段的对应
-->
<select id="select2" resultMap="myResultMap">
select dno _dno,dname _name,loc _loc from dept
</select>
</mapper>
封装SessionUtils
public class SessionUtils {static SqlSessionFactoryBuilder builder=null;
static SqlSessionFactory sqlSessionFactory = null;
static{
try {
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
builder = new SqlSessionFactoryBuilder();
sqlSessionFactory = builder.build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession(){
SqlSession session= sqlSessionFactory.openSession();
return session;
}
}
Mapper代理开发
Mapper代理本质就是一个接口,符合一定规则就会自动生成代理接口的实现类.
符合以下四个要求:
namespace==DeptMapper的路径
Mapper代理接口的方法名与映射文件id保持一致,
Mapper代理接口中方法的参数与映射文件parameterType一致
Mapper代理接口中方法的返回结果与映射文件resultType一致
Mybatis就会自动生成 DeptMapper的实现类.
接口
public interface IDeptDao {public Dept findById(int id);
public void delete(int id);
public void update(Dept d);
public void insertDept(Dept d);
}
测试
SqlSession session = SessionUtils.getSession();//返回的是DeptMapper代理的实现类对象
DeptMapper mapper = session.getMapper(DeptMapper.class);
List<Dept> list = mapper.selectAll();
session.close();
//增删该需要事务
mapper.insertDept(dept);
session.commit();
相关文章推荐
- Mybatis框架学习笔记 lesson2
- mybatis学习笔记之基础框架(2)
- springMVC学习笔记---day02 springMVC+spring+mybatis整合开发框架搭建
- Mybatis框架学习笔记
- JavaWeb学习笔记-mybatis-02-mybatis框架
- Mybatis框架学习笔记一
- mybatis学习笔记 一对一 和一对多 以及 如何通过框架直接返回主键id
- JAVA学习笔记19——MyBatis框架第二章
- Spring学习笔记----三大框架(Spring+SpringMVC+MyBatis)整合详细教程
- mybatis框架总体说明---Mybatis学习笔记(二)
- spring+mybatis轻量级企业框架的学习之路之错误笔记day04
- JAVA学习笔记20——MyBatis框架第三章
- springMVC+Mybatis 学习笔记-【1】Mybatis的框架原理
- [知了堂学习笔记]_mybatis_02如何快速搭建mybatis框架之一
- Maven学习笔记(五)-Maven整合SSM(spring+springMVC+Mybatis)框架
- [知了堂学习笔记]_mybatis_03如何快速搭建mybatis框架之二
- Spring+SpringMVC+Mybatis框架整合例子(SSM) 学习笔记
- JAVA学习笔记18——MyBatis框架第一章
- J2EE系列之MyBatis学习笔记(十三)-- SSM框架搭建
- MyBatis 学习笔记之Logging -【使用日志框架是有根据顺序选择的】