1.MyBatis:MyBatis是一款优秀的持久层框架,用于简化JDBC的开发.(持久层通常指数据访问层,用来操作数据库).
创建userInfo表,并插入如下数据: 在model中建立userinfo实体类,属性与之一一对应.
配置数据库连接字符串,Mybatis中要连接数据库,需要数据库相关参数配置.
接下来就可以建立mapper层来对数据库进行操作了. 查询所有的用户@Mapper注释:表示是MyBatis中的Mapper接口. 程序运行时,框架会自动生成接口的实现类对象(代理对象),并交给Spring的IOC容器管理. @Selectz注解:代表的就是select查询,也就是注解对应方法的具体实现内容. 下面对这个进行单元测试.
测试类上的@SpringBootTest注解,该类在运行时,就会自动加载Spring的运行环境,通过@Autowired注入要测试的类,就可以济宁测试.
2.MyBatis基础操作.
2.1打印日志 在Mybatis当中我们可以借助日志,查看sql语句的执行结果.需要在文件中进行如下的配置;可以看到在添加了配置之后,打印如下.
在控制台显示了对应的sql语句.
2.2参数传递 传递固定参数:比如查找用户id为2的用户信息.如果要动态传递参数,使用#{}的方式获取方法中的参数.
传递id的值为4,来获取查询结果.
可以通过@Param,设置参数的别名,如果使用@Param设置别名,#{}里面的属性名必须和@Param设置的一样.
2.3增加数据(Insert)
这里使用userInfo来传递参数,会直接使用UserInfo对象的属性名来获取参数.如果使用了@Param注解进行了重命名,这里的参数传递就需要使用#{参数.属性}来获取.
这里的insert语句默认返回的是受影响的行数,在有些情况下,数据插入后,需要获取到新插入的数据的id.通过添加@Options注解可以实现这个功能.
useGeneratedKeys:这会使MyBatis使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的主键,默认值:false. KeyProperty:指定能够唯一识别对象的属性,MyBatis会使用getGeneratedKeys的返回值或insert语句的selectKey子元素设置它的值.
设置useGeneratedKeys=true之后,方法的返回值依然是受影响的行数,自增id会设置在keyProperty指定的属性中. 2.4删除(Delete)
这里返回的也是受影响的行数.
2.5改(Update)
2.6别名和驼峰命名 这是数据库中存储的数据
这是执行查询语句得到的数据
可以看到对于create_time等在数据库中使用_命名,在项目中使用createTime命名的数据,可以知道表示的是一个意思,但是项目中却没有接受到值.原因分析:当自动映射查询结果时,MyBatis会获取结果中的返回的列名并在Java类中查找相同名字的属性(忽略大小写),但使用下划线时,无法自动转换.下面是两个解决方案.
(1)起别名:可以看到这里不再显示空了. (2)驼峰映射:数据库通常使用下划线分割各个单词,而java属性一般遵循驼峰命名法约定.为了在这两种命名方式之间启用自动映射,可以进行如下配置.
可以看到字段进行了正确的赋值.
3.MyBatis XML配置文件 MyBatis开发有两种方式:注解和XML,前面介绍了注解的方式,对于一些复杂的sql语句来说,使用xml的方式更加合适.MyBatis XML的方式需要下面两步: 1.配置数据库连接字符串和MyBatis 2.写持久层代码.配置 mybatis xml的文件路径,在resources/mapper创建所有表的xml文件.
查询语句对于标签的说明:<mapper>标签:需要指定namespace属性,表示命名空间,值为mapper接口的全限定名,包括全包名,类名. <select> 查询标签:是用来执行数据库的查询操作的:id是和Interface中定义的方法名称一样,表示对接口的具体实现方法. resultType:是返回的类型,也就是刚才定义的userInfo.进行单元测试:
可以看见xml操作与使用注解的查询操作比较类似,只不过是把sql语句分离出来写,其余部分是一样的,下面是一个增操作.
其余的操作与使用注解相似,不再介绍.