mybatis的使用
1.如何使用mybatis
- 创建user表,添加数据
- 创建模块,导入坐标
- 编写My Batis核心配置文件
- 编写sql映射文件
- 编码
- 定义pojo类
- 加载核心配置文件,获取SqlSessionFactory对象
- 获取SqlSession对象,执行SQL语句
- 释放资源
1.创建user表,添加数据
测试代码:
create database mybatis;use mybatis;drop table if exists tb_user;create table tb_user( id int primary key auto_increment, username varchar(20), password varchar(20), gender char(1), addr varchar(30));INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
2.创建模块,导入坐标[导入测试包时,还需要使用 logback.xml 配置文件]
javax.servlet javax.servlet-api 3.1.0 provided org.slf4j slf4j-api 1.7.20 ch.qos.logback logback-classic 1.2.3 ch.qos.logback logback-core 1.2.3 mysql mysql-connector-java 5.1.26 compile junit junit 4.13 test org.mybatis mybatis x.x.x [%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n <!-- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF , 默认debug 可以包含零个或多个元素,标识这个输出位置将会被本日志级别控制。 -->
3.编写mybatis-config.xml核心配置文件—(配置链接信息)
4. 编写sql映射文件userMapper.xml
select * from tb_user; select * from tb_user where id = #{id};
5. 编码
-
定义pojo类
-
加载核心配置文件,获取SqlSessionFactory对象
-
获取SqlSession对象,执行SQL语句
-
释放资源
package com.itheima;import com.itheima.pojo.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;import java.util.List;/** * Mybatis 快速入门代码 */public class MyBatisDemo { public static void main(String[] args) throws IOException { //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2. 获取SqlSession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3. 执行sql List users = sqlSession.selectList("text.selectAll"); System.out.println(users); //4. 释放资源 sqlSession.close(); }}
优化代码使用Mapper代理(解决硬编码问题,简化后期sql代码)
-
定义新建与sql映射文件同名的mapper接口,并将mapper接口和sql映射文件放置在同一目录下(**在resources下新建层级目录时使用com/user/mapper ” 斜杠 ” **)
-
-
设置sql映射文件**:mybatis-config.xml**namespace属性为Mapper接口权限定名(小细节:后期如果有多个mapper文件,使用packing-name:com.bohai.mapper)
<!-- -->
-
在Mapper接口**🔵**中定义方法,方法名为SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
import com.itheima.pojo.User;import java.util.List;public interface UserMapper { List selectAll(); //查询user对象的selectAll()方法 User selectById(int id);
-
编码
-
通过sqlSession的getMapper方法获取Mapper接口的代理对象
//3.1 获取UserMapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
-
调用对应的方法,完成sql执行
List users = userMapper.selectAll();
-
完整代码:
package com.itheima;import com.itheima.mapper.UserMapper;import com.itheima.pojo.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;import java.util.List;/** * Mybatis 代理开发 */public class MyBatisDemo2 { public static void main(String[] args) throws IOException { //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2. 获取SqlSession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3. 获取UserMapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List users = userMapper.selectAll(); System.out.println(users); //4. 释放资源 sqlSession.close(); }}
-
-