ImageVerifierCode 换一换
格式:DOCX , 页数:75 ,大小:377.99KB ,
资源ID:4914481      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4914481.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(mybatis+spring+springmvc传智播客笔记.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

mybatis+spring+springmvc传智播客笔记.docx

1、mybatis+spring+springmvc传智播客笔记Mybatis框架课程1Mybatis入门1.1单独使用jdbc编程问题总结1.1.1jdbc程序Public static void main(String args) Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try /加载数据库驱动 Class.forName(com.mysql.jdbc.Driver); /通过驱动管理类获取数据库链接 connection = Dr

2、iverManager.getConnection(jdbc:mysql:/localhost:3306/mybatis?characterEncoding=utf-8, root, mysql); /定义sql语句 ?表示占位符 String sql = select * from user where username = ?; /获取预处理statement preparedStatement = connection.prepareStatement(sql); /设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值 preparedStatement.s

3、etString(1, 王五); /向数据库发出sql执行查询,查询出结果集 resultSet = preparedStatement.executeQuery(); /遍历查询结果集 while(resultSet.next() System.out.println(resultSet.getString(id)+ +resultSet.getString(username); catch (Exception e) e.printStackTrace(); finally /释放资源 if(resultSet!=null) try resultSet.close(); catch (SQ

4、LException e) / TODO Auto-generated catch block e.printStackTrace(); if(preparedStatement!=null) try preparedStatement.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); if(connection!=null) try connection.close(); catch (SQLException e) / TODO Auto-generated catc

5、h block e.printStackTrace(); 上边使用jdbc的原始方法(未经封装)实现了查询数据库表记录的操作。1.1.2jdbc编程步骤:1、加载数据库驱动2、创建并获取数据库链接3、创建jdbc statement对象4、设置sql语句5、设置sql语句中的参数(使用preparedStatement)6、通过statement执行sql并获取结果7、对sql执行结果进行解析处理8、释放资源(resultSet、preparedstatement、connection)1.1.3jdbc问题总结如下:1、数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库

6、链接池可解决此问题。2、Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。3、使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。4、对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。1.2MyBatis介绍MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了goo

7、gle code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由

8、mybatis框架执行sql并将结果映射成java对象并返回。1.3Mybatis架构1、mybatis配置SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂3、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。4、mybatis底层自定义了Executor执行器接口操作数据库,Exec

9、utor接口有两个实现,一个是基本执行器、一个是缓存执行器。5、Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。6、Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参

10、数。7、Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。1.4mybatis下载mybaits的代码由管理,地址:mybatis-3.2.7.jar-mybatis的核心包lib-mybatis的依赖包mybatis-3.2.7.pdf-mybatis使用手册1.5创建mysql数据库先导入sql_table.sql,再导入 sql_data.sql脚本:如下:1.6Mybatis入门程

11、序1.6.1需求实现以下功能:根据用户id查询一个用户信息根据用户名称模糊查询用户信息列表添加用户更新用户删除用户1.6.2第一步:创建java工程使用eclipse创建java工程,jdk使用1.7.0_72。1.6.3第二步:加入jar包加入mybatis核心包、依赖包、数据驱动包。1.6.4第三步:log4j.properties在classpath下创建log4j.properties如下:# Global logging configurationlog4j.rootLogger=DEBUG, stdout# Console output.log4j.appender.stdout=

12、org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p %t - %m%nmybatis默认使用log4j作为输出日志信息。1.6.5第四步:SqlMapConfig.xml在classpath下创建SqlMapConfig.xml,如下: SqlMapConfig.xml是mybatis核心配置文件,上边文件的配置内容为数据源、事务管理。1.6.6第五步:po类Po类

13、作为mybatis进行sql映射使用,po类通常与数据库表对应,User.java如下:Public class User private int id; private String username;/ 用户姓名 private String sex;/ 性别 private Date birthday;/ 生日 private String address;/ 地址get/set1.6.7第六步:程序编写1.6.7.1查询1.6.7.1.1映射文件:在classpath下的sqlmap目录下创建sql映射文件Users.xml:namespace :命名空间,用于隔离sql语句,后面会讲

14、另一层非常重要的作用。在SqlMapConfig.xml中添加: select * from user where id = #id select * from user where username like %$value% parameterType:定义输入到sql中的映射类型,#id表示使用preparedstatement设置占位符号并将输入变量id传到sql。resultType:定义结果映射类型。1.6.7.1.2加载映射文件mybatis框架需要加载映射文件,将Users.xml添加在SqlMapConfig.xml,如下: 1.6.7.1.3测试程序:public clas

15、s Mybatis_first /会话工厂 private SqlSessionFactory sqlSessionFactory; Before public void createSqlSessionFactory() throws IOException / 配置文件 String resource = SqlMapConfig.xml; InputStream inputStream = Resources.getResourceAsStream(resource); / 使用SqlSessionFactoryBuilder从xml配置文件中创建SqlSessionFactory sq

16、lSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); / 根据 id查询用户信息 Test public void testFindUserById() / 数据库会话实例 SqlSession sqlSession = null; try / 创建数据库会话实例sqlSession sqlSession = sqlSessionFactory.openSession(); / 查询单个记录,根据用户id查询用户信息 User user = sqlSession.selectOne(test.findUser

17、ById, 10); / 输出用户信息 System.out.println(user); catch (Exception e) e.printStackTrace(); finally if (sqlSession != null) sqlSession.close(); / 根据用户名称模糊查询用户信息 Test public void testFindUserByUsername() / 数据库会话实例 SqlSession sqlSession = null; try / 创建数据库会话实例sqlSession sqlSession = sqlSessionFactory.openS

18、ession(); / 查询单个记录,根据用户id查询用户信息 List list = sqlSession.selectList(test.findUserByUsername, 张); System.out.println(list.size(); catch (Exception e) e.printStackTrace(); finally if (sqlSession != null) sqlSession.close(); 1.6.7.1.4#和$#表示一个占位符号,通过#可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#可以有效

19、防止sql注入。 #可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#括号中可以是value或其它名称。$表示拼接sql串,通过$可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, $可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,$括号中只能是value。1.6.7.1.5parameterType和resultTypeparameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。resultType:指定输出结果类型,mybatis

20、将sql查询结果的一行记录数据映射为resultType指定类型的对象。1.6.7.1.6selectOne和selectListselectOne查询一条记录,如果使用selectOne查询多条记录则抛出异常:org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(

21、DefaultSqlSession.java:70)selectList可以查询一条或多条记录。1.6.7.2添加1.6.7.2.1映射文件:在SqlMapConfig.xml中添加: select LAST_INSERT_ID() insert into user(username,birthday,sex,address) values(#username,#birthday,#sex,#address) 1.6.7.2.2测试程序:/ 添加用户信息 Test public void testInsert() / 数据库会话实例 SqlSession sqlSession = null;

22、try / 创建数据库会话实例sqlSession sqlSession = sqlSessionFactory.openSession(); / 添加用户信息 User user = new User(); user.setUsername(张小明); user.setAddress(河南郑州); user.setSex(1); user.setPrice(1999.9f); sqlSession.insert(test.insertUser, user); /提交事务 sqlSmit(); catch (Exception e) e.printStackTrace(); finally i

23、f (sqlSession != null) sqlSession.close(); 1.6.7.2.3mysql自增主键返回通过修改sql映射文件,可以将mysql自增主键返回: select LAST_INSERT_ID() insert into user(username,birthday,sex,address) values(#username,#birthday,#sex,#address); 添加selectKey实现将主键返回keyProperty:返回的主键存储在pojo中的哪个属性order:selectKey的执行顺序,是相对与insert语句来说,由于mysql的自增原理执行完insert语句之后才将主键生成,所以这里selectKey的执行顺序为afterresultType:返回的主键是什么类型LAST_INSERT_ID():是mysql的函数,返回auto_increment自增列新记录id值。1.6.7.2.4Mysql使用 uuid实现主键需要增加通过select uuid()得到uuid值select uuid()i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1