一. MyBatis的认识
1.1 框架的认识别人写的代码,解决了某一个方面的问题1.2 MyBatis的认识
定义:它是一个ORM框架。
用于和数据库打交道的框架,做数据库的增删改查MyBatis的底层依然是JDBC帮我们消除了操作数据库的重复代码SQL是写在配置文件中ORM: 对象有关系映射O : 对象 -> JA是面向对象的语言R : 关系 -> Mysql是关系型数据库M : 映射1.3 MyBatis的历史原来叫做 ibatis,后面改名叫做mybatis1.4 框架的学习使用方式 【记住】导包(核心包,依赖包)写配置(xml或者properties)启动框架 -> 找到核心类-> 找到配置文件二. Hello-MyBatis
准备:数据库、表格、域、项目结构
包cn . it source . domain;公共类产品{私有长id;//商品名称私有字符串productName//类别idprivate Long dir _ id//售价私有双倍salePrice//供应商私有字符串供应商;//品牌私串品牌;//折扣私有双截止;//成本价私有双倍cost price// getter,setter和toString omit }2.1指南包强调,以后只要操作数据库的框架是JDBC,就必须导入到数据库驱动包中。
核心包 mybatis-3.2.1.jar依赖包 mybatis-3.2.1\lib*.jar数据库驱动包 mysql-connector-ja-5.1.26-bin.jar2.2 核心配置文件 mybatis-config.xml
& lt?xml版本= & # 34;1.0"编码= & # 34;UTF-8 & # 34;?& gt& lt!DOCTYPE配置公共& # 34;-//mybatis . org//DTD Config 3.0//EN & # 34;"http://mybatis.org/dtd/mybatis-3-config.dtd" & gt;& lt配置& gt& lt环境默认值= & # 34;发展& # 34;& gt& lt环境id = & # 34发展& # 34;& gt& lttransactionManager type = & # 34JDBC & # 34;/& gt;& lt!-在配置数据源(连接池)的地方,mybatis自带连接池(性能会比原生JDBC好)-& gt;& lt数据源类型= & # 34;汇集& # 34;& gt& lt属性名= & # 34;司机& # 34;value = & # 34com . MySQL . JDBC . driver & # 34;/& gt;& lt属性名= & # 34;网址& # 34;value = & # 34JDBC:MySQL:///0831 test & # 34;/& gt;& lt属性名= & # 34;用户名& # 34;value = & # 34根& # 34;/& gt;& lt属性名= & # 34;密码& # 34;value = & # 34123456"/& gt;& lt/data source & gt;& lt/环境& gt& lt/environments & gt;& lt!-读取我们的映射文件(用于编写sql的xml文件)-& gt;& ltmappers & gt& lt映射器资源= & # 34;cn/it source/domain/product mapper . XML & # 34;/& gt;& lt/mappers & gt;& lt/configuration & gt;2.3映射配置文件productmapper.xml
@ test public void test findone(){ Product Product = Dao . findone(1L);System.out.println(产品);}三。工具类MyBatisUtil的作用:提供了一个静态方法,可以直接提供SqlSession对象SqlSessionFactoryBuilder:构造工厂,用完就丢弃SqlSessionFactory:只需要创建一次重量级对象,创建和销毁都需要更多的资源和性能。有二级缓存。连接池是线程安全的SqlSession:操作数据库的对象pack cn . it source . util;导入org . Apache . ibatis . io . resources;导入org . Apache . ibatis . session . SQL session;导入org . Apache . ibatis . session . SQL session factory;导入org . Apache . ibatis . session . sqlsessionfactorybuilder;/* * *这是一个关于MyBatis操作* 1的工具类。单例2。静态方法*主要是:提供直接获取SqlSession对象* */公共类MyBatisUtil {//这个声明必须是静态的,静态代码块可以引用私有静态sqlsessionfactory = null/* * *静态代码块:这个类只执行一次*我想在静态代码块中创建一个SqlSessionFactory对象*因为在实际开发中只需要创建这个对象*/Static { try { factory = new sqlsessionfactor builder()。构建(资源。getresourcereader(& # 34;my batis-config . XML & # 34;));} catch(Exception e){ e . printstacktrace();}}/* *提供直接获取SqlSession对象*/public static SQL session opensession(){ return factory . opensession();}}四。CRUD注意:增加、删除和修改是一个需要提交的事务。
4.1 查询所有数据SQL
& lt!-查询所有数据(无需传递参数)resultType:返回其中一个数据的类型-& gt;& lt选择id = & # 34芬达尔& # 34;结果类型= & # 34;cn . it source . domain . product & # 34;& gtselect * from product & lt/select & gt;Ja实现@覆盖公共列表
4.3 修改功能sql
& lt!-修改一条数据-& gt;& lt更新id = & # 34更新& # 34;parameterType = & # 34cn . it source . domain . product & # 34;& gt更新产品集productName=#{productName},dir_id=#{dir_id},salePrice=#{salePrice},supplier=#{supplier},brand=#{brand},cutoff=#{cutoff},costPrice=#{costPrice},其中id = # { id } & lt/update & gt;Ja @ Override public void update(Product Product){ SQL session session = null;请尝试{ session = mybatisutil . opensession();//修改函数session . update(& # 34;cn . it source . domain . product mapper . update & # 34;,产品);//提交事务session . Commit();} catch(异常e){ session . roll back();e . printstacktrace();}最后{ session . close();} }4.4删除函数SQL
namespace必需和接口的全限定名对应上sql的id和方法名对应上5.1 结构5.2 ProductMapper.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指向的是和它配套的接口 –><mapper namespace="cn.itsource.mapper.ProductMapper"><!– long是一个别名,实际指向的 ja.lang.Long –><select id="findOne" parameterType="long" resultType="product">select * from product where id=#{id}</select><select id="findAll" resultType="Product">select * from product</select>….</mapper>5.3 ProductMapper
public interface ProductMapper {void se(Product product);void update(Product product);void delete(Long id);//@Select("select * from product where id=#{id}")Product findOne(Long id);List<Product> findAll();}
只写SQL
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。