👋 欢迎浏览我的技术博客,记录学习笔记 本人28届软工一枚

1.22 Mybatis

mybatis是用来连接管理数据库的,是JDBC的上位,比JDBC灵活。
放图片吧,代码被网页吞了
image
image
image
image
image

一.JDBC不灵活的原因
为防止sql注入(通过输入一些字符改变事先定义好的sql语句如输入账号密码时输入or等字符修改sql)JDBC使用PreparedStatement,但该对象执行sql时会需要将每一个‘?’进行赋值且一旦要更改就要更改多处因此使用MyBatis框架。
二.MyBatis的使用
参考官网https://mybatis.net.cn/index.html

一共6步
1.配置maven依赖或导入.jar包
jar包可通过官网下载
maven依赖则需要将以下代码粘贴到dependencies标签中
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>
2.在resources目录下创建文件MyBatis-config.xml并将以下代码的propertyname和mappers更改并修改数据库的基本信息如url,username,password
`


3.创建实体类并提供相应的get和set方法以及toSring(); 3.创建文件名为表名+Mapper的文件放在resources下然后粘贴以下代码并修改其中的namespace(任意非空值),id(任意值),resultType(实体类名)


`

4.在MyBatis-config.xml的Marror标签里添加文件路径(从resources开始,若直接在resources下则将文件名放上去就好)
5,在使用的类里加上以下代码
String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession();
6.然后将List<?> users = sqlSession.selectList("namespace.id");的‘?’换成实体类名并将namespace换成Mapper中定义好的(第三步)namespace和配套的id

三.Mapper代理
要求接受三条规则
1.要创建映射文件对应的接口,命名和Mapper名称一致,Mapper的关于resources的路径和接口相对与根目录(一般是java)的路径要一模一样,(这样做是为了将接口与映射文件放在同一目录)。
2.接口中定义方法,方法名是Mapper中的id的值,注意方法和返回值。
3.映射文件的namespace不能随便写,必须是接口的全限定名
如:image
使用上同传统MyBatis但第6步改为:实体类名Mapper u_m=sqlSession.getMapper();
u_m.接口中的方法名

*这有一个小bug:当数据库字段与实体类的字段不同时会封装不上
可以在映射文件中加入sql片段
字段名,字段名( as 别名),...
select时直接include
resultMap就略了吧

posted @ 2026-01-22 15:30  气球飞起  阅读(9)  评论(0)    收藏  举报