mybatis从入门到精通Word文档下载推荐.docx

上传人:b****1 文档编号:3319144 上传时间:2023-05-01 格式:DOCX 页数:25 大小:349.72KB
下载 相关 举报
mybatis从入门到精通Word文档下载推荐.docx_第1页
第1页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第2页
第2页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第3页
第3页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第4页
第4页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第5页
第5页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第6页
第6页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第7页
第7页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第8页
第8页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第9页
第9页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第10页
第10页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第11页
第11页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第12页
第12页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第13页
第13页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第14页
第14页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第15页
第15页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第16页
第16页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第17页
第17页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第18页
第18页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第19页
第19页 / 共25页
mybatis从入门到精通Word文档下载推荐.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

mybatis从入门到精通Word文档下载推荐.docx

《mybatis从入门到精通Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《mybatis从入门到精通Word文档下载推荐.docx(25页珍藏版)》请在冰点文库上搜索。

mybatis从入门到精通Word文档下载推荐.docx

mybati运行环境(jar包):

从下载

lib下:

依赖包

mybatis-3.4.1.jar:

核心包

3.3 

log4j.properties

#Globalloggingconfiguration

log4j.rootLogger=ERROR,stdout

#MyBatisloggingconfiguration...

log4j.logger.org.mybatis.example.BlogMapper=TRACE

#Consoleoutput...

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

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

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

3.4 

工程目录结构

3.5 

根据用户id查询用户信息、通过用户名模糊查询用户信息

3.5.1 

编写映射文件(包括对应的实体类:

User.java)

映射文件命名:

User.xml(原始的ibatis命名方式),mapper代理的映射文件名称叫做XXXMapper.xml

<

?

xmlversion="

1.0"

encoding="

UTF-8"

>

!

DOCTYPEmapper

PUBLIC"

-//mybatis.org//DTDMapper3.0//EN"

"

http:

//mybatis.org/dtd/mybatis-3-mapper.dtd"

--namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离

注意:

将来如果使用mapper代理方法开发,namespace有特殊作用-->

mappernamespace="

test"

<

--在映射文件中配置许多sql语句-->

--通过select执行数据库查询,

id:

标识映射文件中的sql,成为statement的id,将sql语句封装到mapperStatement对象中,所以将id成为statement的id

parameterType:

输入参数的类型

#{}:

表示一个占位符

#{id}:

其中id表示输入的参数,参数名就是id,如果输入参数是简单类型,#{}中的参数名可以任意

resultType:

指定sql输出结果所映射的对象类型

-->

selectid="

findUserById"

parameterType="

int"

resultType="

com.liyuan.po.User"

SELECT*FROMUSERWHEREuid=#{id}

/select>

--${}:

表示拼接sql串,将接收到的参数的内容不加任何修饰拼接到sql中-->

findUserByName"

java.lang.String"

SELECT*FROMUSERWHEREnameLIKE'

%${value}%'

/mapper>

3.5.2 

将映射文件加载到SqlMapConfig配置文件中

--加载映射文件-->

mappers>

mapperresource="

sqlmap/User.xml"

/>

/mappers>

3.5.3 

程序编写

@Test

publicvoidfindUserByIdTest()throwsIOException{

//mybatis配置文件

Stringresource="

SqlMapConfig.xml"

;

InputStreaminput=Resources.getResourceAsStream(resource);

//创建会话工厂

SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder()

.build(input);

//通过工厂得到SqlSession

SqlSessionsqlSession=sqlSessionFactory.openSession();

//通过SqlSession操作数据库

Useruser=sqlSession.selectOne("

test.findUserById"

23);

System.out.println(user.getName());

//释放资源

sqlSession.close();

}

//根据name查询用户信息,得到一条记录的结果

@Test

publicvoidfindUserByNameTest()throwsIOException{

List<

User>

list=sqlSession.selectList("

test.findUserByName"

"

李"

);

System.out.println(list.size());

3.6 

插入用户信息

3.6.1 

User.xml映射文件:

--添加用户

制定输入参数类型是pojo

#{}:

中指定pojo属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值-->

insertid="

insertUser"

insertintouser(username,password)value(#{username},#{password})

/insert>

3.6.2 

测试代码:

publicvoidinsertUserTest()throwsIOException{

Useruser=newUser();

user.setUsername("

ll"

user.setPassword("

123456"

sqlSession.insert("

test.insertUser"

user);

//提交事务

sqlSmit();

3.7 

自增主键返回

mysql自增主键,执行insert提交之前自动生成一个自增主键。

通过mysql函数获取到刚刚插入的记录的自增主键 

last_insert_id(),是在insert之后调用此函数

3.7.1 

User.xml映射文件配置:

<

--将插入数据的主键返回,返回到user对象中,只适用于自增主键

order:

SELECT_INSERT_ID执行顺序,相对于insert语句来说-->

selectKeykeyProperty="

uid"

order="

AFTER"

java.lang.Integer"

SELECTLAST_INSERT_ID()

/selectKey>

3.7.2 

程序代码中直接获取

System.out.println(user.getUid());

3.8 

非自增主键的返回

使用mysql的uuid()函数生成主键,需要修改表中uid字段类型为string,长度为35

执行的思路:

先通过uuid()查询到主键,将主键输入到sql语句中

执行uuid语句的顺序相对于insert语句之前

BEFORE"

SELECTuuid()

insertintouser(uid,username,password)value(#{uid},#{username},#{password})

3.9 

删除和更新用户

--删除用户-->

deleteid="

deleteUser"

deletefromuserwhereuid=#{id}

/delete>

--更新用户-->

updateid="

updateUser"

updateusersetusername=#{username},password=#{password}whereuid=#{uid}

/update>

3.10#{}和${}

3.11 

mybatis和hibernate的区别

hibernate:

是一个标准的ORM框架(对象关系映射)。

不需要写sql,都是自动生成的。

对sql语句进行优化、修改比较困难

适用于需求变化不多的中小型项目,比如:

后台管理项目

mybatis:

专注是sql本身,在映射文件中需要程序员自己编写sql语句,优化比较方便。

mybatis是一个不完全的ORm框架;

虽然程序员自己写sql,也可以实现映射(输入、输出映射)。

适用于需求变化较多的项目,比如:

互联网项目。

4、mybatis开发dao两种方法:

1)原始dao开发方法(程序需要编写dao接口和dao实现类)

2)mybatis的mapper接口(相当于dao接口)代理开发方法

4.1 

SqlSession使用范围

//mybatis配置文件

Stringresource="

InputStreaminput=Resources.getResourceAsStream(resource);

//创建会话工厂

SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(input);

//通过工厂得到SqlSession

SqlSessionsqlSession=sqlSessionFactory.openSession();

4.1.1 

通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory

4.1.2 

通过SqlSessionFactory创建SqlSession,使用单例模式管理sqlsessionFactory

4.1.3 

sqlSession是一个面向用户的接口:

SqlSession中提供了很多操作数据库的方法;

是线程不安全的;

Sqlsession最佳适用场合在方法体内,定义成局部变量使用。

4.2 

原始dao的开发方法(程序员需要写dao接口和dao实现类)

4.2.1 

程序员需要向dao实现类中注入SqlSessionFactory

UserDao接口:

定义方法(抛异常)

UserDaoImpl类:

实现接口UserDao,并通过构造函数的方法向UserDaoImpl类注入SqlSessionFactory;

UserDaoImplTest类:

创建SqlSessionFactory实例,在创建UserDao对象

4.2.2 

总结原始dao开发问题

1)dao接口实现类方法中存在大量模板代码,设想能否将这些代码提取出来,大大减少程序员的工作量

2)调用sqlSession的方法时将statement的id硬编码了

3)调用sqlSession的方法时传入的变量,由于sqlSession方法使用泛型,即使变量传入错误,在编译阶段也不会报错

4.3 

mapper代理方法(程序员只需要mapper接口[相当于dao接口])

思路:

4.3.1 

程序员还需要编写mapper.xml映射文件

4.3.2 

程序员编写mapper.java接口需要遵循一些开发规范,mtbatis可以自动生成mapper接口实现类代理对象

开发规范:

1)在mapper.xml中namespace等于mapper接口地址

com.liyuan.mapper.UserMapper"

2)mapper.java接口中的方法名和mapper.xml中statement的id一致

3)mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致

4)mapper.java接口中的方法返回值的类型和mapper.xml中statement的resultType指定的类型一致

//根据用户id查询用户信息

publicUserfindUserById(intuid)throwsException;

总结:

以上开发规范主要对下边的代码进行统一生成,

Useruser=sqlSession.selectOne("

uid);

4.3.4 

最后还要将mapper.xml映射文件添加到SqlMapConfig.xml配置文件中

mapper/UserMapper.xml"

5、mybatis配置文件SqlMapConfig.xml

mybatis的全局配置文件SqlMapConfig.xml。

配置内容如下:

DOCTYPEconfiguration

-//mybatis.org//DTDConfig3.0//EN"

//mybatis.org/dtd/mybatis-3-config.dtd"

configuration>

--和spring整合后environments配置将消除-->

environmentsdefault="

development"

environmentid="

--使用jdbc事务管理,事物控制由mybatis-->

transactionManagertype="

JDBC"

dataSourcetype="

POOLED"

propertyname="

driver"

value="

com.mysql.jdbc.Driver"

url"

jdbc:

mysql:

//localhost:

3306/shop"

username"

root"

propert

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2