mybatis01

Mybatis

 

介绍:

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 201311月迁移到Github

Mybatis通过xml或注解的方式将要执行的各种statementstatementpreparedStatemntCallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

 

 

MyBatis框架:

 

 

SqlMapConfig.xml: MyBatis核心配置文件

Mapper.xml:一个表对应一个Mapper,sql语句

SqlSeaaion执行sql语句,通过SqlSessionFactory得到对象

 

  1. srcnew一个File文件 名:log4j.properties  复制代码:

# Global logging configuration

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mybatis默认使用log4j作为输出日志信息。

 

  1. srcnew一个xml文件  名: 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>

<!-- 和spring整合后 environments配置将废除 -->

<environments default="development">

<environment id="development">

<!-- 使用jdbc事务管理 -->

<transactionManager type="JDBC" />

<!-- 数据库连接池 -->

<dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver" />

<property name="url"

value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />

<property name="username" value="root" />

<property name="password" value="root" />

</dataSource>

</environment>

</environments>

</configuration>

修改库名和密码

 

  1. 创建pojo

pojo类作为mybatis进行sql映射使用,pojo类通常与数据库表对应,表的实体类

 

  1. 创建sql映射文件xml

一个表对应一个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">

<mapper  namespace=””></mapper>//namespace属性,相当于包名的作用,用来区分(写所对应的接口的路径 com.oracle.mapper.userpammer

查询:

<select>直接写sql语句</select>

新增:

<insert></insert>

删除:

<delete></delete>

修改

<update></update>

属性:

Id:方法名  

parameterType="传入类型" resultType="返回类型(自定义类型需要写完整的包名加类名,如果返回个集合写集合的泛型)"

占位符:#{形参}

通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换#{}可以有效防止sql注入 #{}可以接收简单类型值或pojo属性值 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

如果是传入一个自定义类,占位符的形参需跟自定义类的变量名相同

 

字符串拼接:${value}

通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换 ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value

 

 

  1. xml需在总配置文件SqlMapConfig.xml中配置

<mappers>

<mapper  resource=”com/oracle/mapper/user.xmlxml所在地路径)”/>

</mappers>

 

 

  1. 测试:

查询:

//加载配置文件

String path="SqlMapConfig.xml";

InputStream in= Resources.getResourceAsStream(path);

//获取SqlSessionFactory

SqlSessionFactory fac=new SqlSessionFactoryBuilder().build(in);

//获取SqlSession对象

SqlSession sqlsession=fac.openSession();

返回值=Sqlsession.SelectOne(“namespace.方法名”,传入实参)

//SelectOne() :获取单条数据

//SelectList() :获取一个集合

新增:

//获取SqlSession对象

SqlSession sqlsession=fac.openSession();

sqlsession.insert("namespace.方法名",user);//自己创建一个user对象并传入值

//手动提交

//增删改都需要手动提交

sqlsession.commit();

 

 

 

动态代理方式:

Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法

Mapper接口开发需要遵循以下规范:

1、 Mapper.xml文件中的namespacemapper接口的类路径相同。

2、 Mapper接口方法名和Mapper.xml中定义的每个statementid相同

3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql parameterType的类型相同

4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sqlresultType的类型相同

 

创建接口:

需在表所对应的mapper.xml同路径下new一个接口 ,名跟xml名一样

在写方法时,方法、传入参数、返回值都要与对应的xml中的相同//接口,只有方法声明

SqlMapConfig.xml中改为:

<mappers>

<mapper  class=”不再是xml路径,改为接口的路径”/>

</mappers>

 

//加载配置文件

String path="SqlMapConfig.xml";

InputStream in= Resources.getResourceAsStream(path);

//获取SqlSessionFactory

SqlSessionFactory fac=new SqlSessionFactoryBuilder().build(in);

//获取SqlSession对象

SqlSession sqlsession=fac.openSession();

//获取动态代理对象(实现类对象)

接口名 usermapper=sqlsession.getMapper(接口名.class);

返回值=usermapper.方法(参数);

 

 

SqlMapConfig.xml配置文件:

properties()

src下创建db.properties配置文件

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8

username=root

password=123456

SqlMapConfig.xml中引入配置文件:

<configuration>下:

<properties resource="db.properties"></properties>

原改为:

<!-- 和spring整合后 environments配置将废除 -->

<environments default="development">

<environment id="development">

<!-- 使用jdbc事务管理 -->

<transactionManager type="JDBC"/>

<!-- 数据库连接池 -->

<dataSource type="POOLED">

<property name="driver" value="${driver}"/>

<property name="url"

value="${url}"/>

<property name="username" value="${username}"/>

<property name="password" value="${password}"/>

</dataSource>

</environment>

</environments>

 

typeAliases:给类配别名

<typeAliases>

<!-- <typeAlias type="com.oracle.pojo.User完整的包名加类名,不区分 大小写"alias="User"/> -->

<!-- 设别名 -->

<package name="com.oracle.pojo"/>

</typeAliases>

 

mappers:映射器

包下的所有接口全部配合

<mappers>

<package name="com.oracle.pojo(包名)"/>

</mappers>

 

posted @ 2019-05-19 23:37  fdbnf  阅读(195)  评论(0编辑  收藏  举报