Mybatis框架的使用
来源:互联网 发布:女生滴风油精知乎 编辑:程序博客网 时间:2024/06/08 09:02
- 定义
开源的持久层框架,底层仍然是jdbc
jdbc 优点:速度最快 缺点:繁琐hibernate 优点:不用写sql,代码简洁 缺点:速度慢,需要优化繁杂的sqlmybatis 优点:代码简洁,易掌握 性能速中 需要写sql
- 步骤
step1.导包。 mybatis,ojdbc
step2 添加配置文件
step3 实体类
注: 属性必须和表中字段一致,不一致需要额外配置
step4 添加映射文件
主要是sql语句
step5 调用mybatis提供的api访问数据库
注:SqlSession提供的方法
基本原理
查询时
- 返回map类型的结果
mybatis会将查询结果分两步处理:
step1. 将记录中的数据添加到一个对应的Map对象里面
(以字段名作为key,以字段值作为value)。
step2. 再将Map对象中的数据添加到对应的实体对象里面。
解决字段名与实体类属性名不一致的情况
方式一 使用别名,比如
SELECT id empId,name ename……
方式二 使用resultMap。
<!-- 解决实体类和数据库表的字段的名称不一致的情况 --> <select id = "findAll2" resultMap="bookResultMap"> SELECT * FROM books </select> <!-- 对实体类和表的字段不一致的进行设置,字段一致的不需要设置 --> <resultMap type = "entity.Book" id = "bookResultMap"> <result property = "bId" column="id"/> </resultMap>
Mapper映射器
定义: 符合映射文件要求的接口
要求如下
方法名要与 sqlId 一致
方法的返回值要与resultType一致
方法的参数类型要与parameterType一致。
映射文件的namespace必须等于接口的完整的名字
注 mybatis会生成符合该接口(mapper映射器)要求的对象。
如何使用mapper映射器?
step1.按照要求写好接口。
step2.调用SqlSession提供的getMapper方法来获得接口实现。
测试代码
public class Test1 { private SqlSession session; @Before public void init() { String config = "SqlMapConfig.xml"; SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); SqlSessionFactory ssf = ssfb.build(Test.class.getClassLoader().getResourceAsStream(config)); session = ssf.openSession(); } @Test public void t8() { BookDao dao = session.getMapper(BookDao.class); Book b = new Book(); b.setbId(12); b.setName("葵花宝典"); b.setNum(50); b.setInfor("欲练此功,必先自宫"); dao.updateById(b); session.commit(); session.close(); }
定义的Mapper接口
public interface BookDao { /** * 增,删,改,查 */ public List<Book> findAll2(); public void save(Book b); public void deleteByName(String name); public void updateById(Book b);}
mybatis配置文件 (sqlMapconfig.xml)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"><configuration> <environments default="environment"> <environment id="environment"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> <property name="username" value="scott" /> <property name="password" value="tiger" /> </dataSource> </environment> </environments> <!-- 指定映射文件的位置 --> <mappers> <mapper resource="entity/BookMapper.xml" /> </mappers></configuration>
配置文件中(bookMapper.xml)
<mapper namespace="dao.BookDao"> <select id = "findAll" resultType = "entity.Book"> SELECT * FROM books </select> <!-- 解决实体类和数据库表的字段的名称不一致的情况 --> <select id = "findAll2" resultMap="bookResultMap"> SELECT * FROM books </select> <!-- 对实体类和表的字段不一致的进行设置,字段一致的不需要设置 --> <resultMap type = "entity.Book" id = "bookResultMap"> <result property = "bId" column="id"/> </resultMap> <!-- 增加 --> <insert id = "save" parameterType ="entity.Book"> INSERT INTO books(id,name,num,infor) VALUES(book_seq.nextval,#{name},#{num},#{infor}) </insert> <delete id = "deleteByName" parameterType="string"> DELETE FROM books WHERE name = #{n} </delete> <update id = "updateById" parameterType="entity.Book"> UPDATE books SET name = #{name},num = #{num},infor=#{infor} WHERE id = #{bId} </update></mapper>
总结: 在 sqlMapconfig.xml 指定 bookMapper.xml文件的位置。
在调用 SqlSession 提供的api进行相应的数据库操作
一般情况下,一张表,对应一个实体类,并为这个实体类配置一个xxx.xml文件。
阅读全文
0 0
- MyBatis框架的使用
- MyBatis框架的使用
- MyBatis框架的使用
- Mybatis框架的使用
- MyBatis框架的使用
- MyBatis框架的基本使用
- 构建一个使用mybatis框架的项目
- 使用MyBatis 框架犯的错误
- MyBatis框架的使用(一)
- MyBatis的使用和SSM框架基础
- SpringSide使用MyBatis框架
- Mybatis框架使用步骤
- mybatis框架缓存使用
- Mybatis框架的连接池的使用工具类
- 基于ssm框架的mybatis pagehelper分页插件的使用
- mybatis 框架的配置
- mybatis框架的配置
- MyBatis框架的认识
- 树的公共祖先问题
- 健康话语:心悸
- java学习之路
- Java实现选择排序
- 【算法题】两有序数组中位数
- Mybatis框架的使用
- 2017.7.14. 最长公共子序列
- 数据库连接池
- MAC上安装LLVM
- 关于mybaits的缓存
- Django编写RESTful API(三):基于类的视图
- js跨域总结
- 各协议的协议号和端口号
- Java 中的成员内部类