Mybaties第一天
1.入门
导包
在src目录下配置Mybaties全局配置文件,在帮助文档里复制。
全局配置的几个常用属性
properties:用于导入property文件
TypeAliases :给指定的接口起别名 (子属性TypeAlias type="接全类名" alias="别名")
或者直接<package name=""/> 扫描所有的接口,别名为接口名或者接口名首字母小写(常用)
Mapper :映射xml文件
resource:指定接口所对应的xml文件(当前项目路径),接口和xml文件可以分开放
class:指定对应的接口,接口和xml不可分开,且接口名与xml名必须一致
<package name=""/> 扫描所有的接口和xml, 所以接口名与xml名必须一致(常用)
配置sql的配置文件,在 帮助文档复制
查询:<select id="与接口方法对应的方法名一致" resultType="查询返回类型(可以是基本数据类型或者实体类的全类名)" parameterType="入参 类型" >
select * from book where bid=#{sds}//查询语句 parameterType="入参类型" 可写可不写
resultType="" select 语句必须写
</select>
修改:
<update id="update" parameterType="com.ujiuye.bean.Book" >
update book set title=#{title},bprice=#{bprice},speak=#{speak} where bid=#{bid}
//#{实体类的属性名} parameterType="入参类型" 可写可不写
</update>
添加:<insert id="insertBook" parameterType="com.ujiuye.bean.Book" useGenerateKeys=true,keyProperty=“pojo对象属性”>
//sql parameterType="入参类型" 可写可不写
//useGenerateKeys=true,keyProperty=“pojo对象属性” 添加时获取添加对象的ID
</insert >
删除:
<delete id="DeleteBookById" >
// parameterType="入参类型" 可写可不写
delete from book where bid=#{id} and title=#{name}
</delete>
2.传递参数
基本数据类型:
可以根据下标:#{0},#{11}
给参数起别名(@Param("别名")数据类型 参数名) #{别名} (常用)
传递的参数是bean对象
#{bean对象的属性值}(常用)
参数是Map集合
#{map 的键}
参数是list
#{list[下标]}
参数是数组
#{array[小标]}
混合传递
List<Bean对象>
#{list[下标].bean对象的属性值}
3. #{} 和${}传参的区别
#{}采用的是预编译占位符的方式,避免sql注入
${} 直接把值放到了对应的位置(传 数据库名 、模糊查询可以用)
4.SQL片段
sql语句中重复的语句提取出来:
<sql id="select">
select * from book
</sql>
用法:<include refid="sql 的Id"></include>
5.自定义结果类型
<resultMap id="PersonMap" type="book"> //type:实体类对象的全类名或者别名
<id property="bid" column="bid"/> //id 数据库表的主键用的 property 实体类中的属性名 column 表中的列名 (防止实体类中的属性名与表中的列名不一致)
<result property="title" column="title"/> //result 普通列名
<result property="bprice" column="bprice"/>
<result property="speak" column="speak"/>
</resultMap>
如何引用:
<select id="FindAll" resultMap="resultMap的ID" >
select * from book where bid=#{sds}
</select>
6.Mybaties优势
本身就有一个框架,除了基本的增删改查之外,还有缓存,延迟加载机制
把sql语句与java代码分开
支持动态sql
可以直接把表映射到bean类上
是一个半自动化的orm框架,手写sql
7.运用Mybaties
String resource = "bean.xml";
InputStream inputStream;
try {
//读取全局配置文件
inputStream = Resources.getResourceAsStream(resource);
//创建SqlSession工厂
SqlSessionFactory sql = new SqlSessionFactoryBuilder().build(inputStream);
//开启
SqlSession session = sql.openSession();
//获取接口代理类的映射文件
BookMapper per = session.getMapper(BookMapper.class);
/调用接口中的方法执行sql
List<Book> book = per.selectByExample(be);
System.out.println(book);
//提交事务
session.commit();
//关闭工厂
session.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

浙公网安备 33010602011771号