mybatis映射器用法

目录

什么是MyBatis

映射器的组成:

MyBatis中的映射分类:

MyBatis的特点:

mybatis 解决了jdbc 的问题:

JDBC的弊端

解决方法:

mapper动态代理

实现方法:

MyBatis快速开始

XML配置文件映射:

注解


什么是MyBatis

     MyBatis是一款ORM模型,支持定制化 SQL、存储过程以及高级映射。可以使用简单的 XML

或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

映射器的组成:

SQL语句映射(<select>,<insert>,<delete>,<update>)

关系映射(<sql>,<parameterMap>,<resultMap>)

MyBatis中的映射分类:

XML配置文件、注解

MyBatis的特点:

简单易学、灵活度高、功能完整、半自动化、集成方便

mybatis 解决了jdbc 的问题:

JDBC的弊端

硬编码、SQL参数固定、代码重复度高、底层技术

解决方法:

1.在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。

2.将Sql语句配置在XXXXmapper.xml文件中与java代码分离。

3.Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。

4.Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。

mapper动态代理

Mybatis可以帮助我们自动产生实现类,并可以调取方法得到结果,这就是Mybatis的mapper动态代理;

实现方法:

1. 接口方法名要和 sqlmapper 的id名一样 能找到要执行的sql语句

2. 接口返回值的类型  要和 sqlmapper中 resultType 类型要一致(每个元素的类型)

        // selectList  selectOne

3. 接口中入参的类型 要和 sqlmapper 中 parameterType类型要一致

4.sqlmapper中的namescpace 的值要和 接口的类路径要一致

5. 接口要和sqlmapper 放在同一个包下

6. 接口的名字 要和 sqlmapper 文件名要一致

注:

mybatis 不支持重载,id不能重复

mybatis 传参只能传一个,只有一个parameterType

MyBatis快速开始

1.引入 mybatis-config.xml 配置文件

2.引入 Mapper 映射文件

3.创建 MyBatisUtil 类

4.创建 SqlSession 类访问数据库

5.输出结果

例:

//读取主配置文件
     InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
//通过sqlSession工厂构建类构建sqlSession工厂
     SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//生产SqlSession对象
     SqlSession sqlSession = build.openSession();
     System.out.println("请输入要查询的学生对象");
     int sid=input.nextInt();
//执行sql语句并得到结果
     Student s = sqlSession.selectOne("zhaodaoxuesheng", sid);
//业务
     System.out.println(s);
//释放资源
     sqlSession.close();

主配置文件代码

<?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.ape.bean"/>
		
	</typeAliases>
	
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- <mapper resource="com/ape/mappre/studentmappre.xml"/> -->
		<package name="com.ape.mapper"/>
	</mappers>
</configuration>

XML配置文件映射:

在XML文件中写SQL语句:

<?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.ape.mapper.MasterMapper">
	<resultMap type="Master" id="aaa">
		<id column="Smid" property="smid"/>
		<result column="sm_name" property="smname"/>
		<result column="smsex" property="smsex"/>
	</resultMap>
	
	<!-- 全查 -->
	 <select id="selectMaster" resultMap="aaa">
		select smid,sm_name,smsex from schoolmaster
	 </select>

	
	<!-- 增加 -->
	<insert id="addMaster" parameterType="Master">
		insert into schoolmaster(sm_name,smsex) values(#{smname},#{smsex})
	</insert>
	
</mapper>

注解

注解的分类:

1.基本注解

        @Insert、@Delete、@Update、@Select

2 .结果映射注解

        @Results

3.动态SQL注解

        1.脚本SQL

        2.方法中构建sql

                @SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider

        3.SQL 语句构造器

例:

public interface StudentMapper {

	//查询
		//全查
	@Select("select * from Student")
	public List<Student> findAllStudent();
		//根据id查询
	public Student findAllStudentBySid(int sid);
	// @param
	@Select("select * from Student where ssex=#{ssex} limit #{aa},#{bb}")
	public List<Student> findAllStuP(@Param("aa") int a,@Param("bb") int b,@Param("ssex") String ssex);
	
	//新增
	@Insert("insert into Student(sname,birthday,ssex,classid) values(#{sname},#{birthday},#{ssex},#{classid})")
	@Options(keyProperty = "sid",useGeneratedKeys = true)
	public int addStudent(Student s);

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值