mybatis从入门到精通Word文档下载推荐.docx
- 文档编号:3319144
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:25
- 大小:349.72KB
mybatis从入门到精通Word文档下载推荐.docx
《mybatis从入门到精通Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《mybatis从入门到精通Word文档下载推荐.docx(25页珍藏版)》请在冰点文库上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mybatis 入门 精通