MyBatis练习之增删改查
详情见:D:\Develop\apache-maven-3.8.6-bin\repository\mybatis
mybatis使用步骤
1.获取sqlSessonFactory对象 网上有那三句话
2.获取sqlSesson对象 sqlSessonFactory.openSesson
3.获取mapper getMapper
4.调用方法
5.释放资源
1.首先配置pox.xml文件:添加依赖
<dependencies>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<!-- 添加slf4j日志api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.20</version>
</dependency>
<!-- 添加logback-classic依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 添加logback-core依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
2.在resources下面配置一个mybatis-config.xml文件 连接数据库 并且加载一个mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载sql映射文件-->
<!-- <mapper resource="mapper/UserMapper.xml"/>-->
<package name="mapper"/>
</mappers>
</configuration>
3.数据库里面放入表
4.利用mapper代理开发
注意:定义SQL映射文件的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
设置SQL映射文件的namespace属性为Mapper接口的全限定名
在mapper接口中定义方法,方法名就是SQL映射文件中sql的id,并保持参数类型和返回值一致
如果Mapper接口名和SQL映射文件名相同,并在同一目录下,可以使用包扫描的方式,<packge name = "目录的位置";>
5.定义表的实体类,提供get/set方法和toString方法
6.设置mapper在同一级目录,因为在开发中需要分开,所以要么放在一起要么分开之后按照如下路径保存,需要在一起
7.开始写测试类
方法中的问题:
查询全部方法:数据库表的字段名称和实体类的名称不相符就不能自动封装
1.起别名 别名和实体类名字一样
2.封装sql
3.resultMap: type实体类的映射 那个需要就result哪个 还有一个id的方法 是弄主键的
查看某一条记录的信息:参数占位符
#{}会替换成 ?防止sql注入 参数传递的时候用
${}不会替换 会存在sql注入问题
大于小于等特殊字符 转义字符 CDATA区 大写的CD 自动补充
条件查询:
三种方式:
注意:用户有可能不是全部输入这三个条件,所以需要进行更改sql语句 动态sql 语句
if判断语句:
有可能第一条数据没有所以后面的and就出错了 所以可以用 where后面加一个恒等式 1=1 或者用标签<where>
单条件查询:
添加语句:默认把提交事务给关闭了:
可以把这里改成true 来修改默认的
也可以在手动提交一下