简介:
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis对JDBC访问数据库的过程进行了封装,简化了JDBC代码,解决JDBC将结果集封装为Java对象的麻烦。
PS:由于<>会 被编辑器识别为标签,所以本文用()代替<>
使用:
-
1.导入依赖
(dependency)
(groupId)org.mybatis(/groupId)
(artifactId)mybatis(/artifactId)
(version)3.2.8(/version)
(/dependency) -
2.设置配置文件
-
2.1 mapper.xml //文件名可以随意,但后面会引用
(mapper namespace=“EmpMapper”)
(!-- 在mapper标签内部可以配置很多字标签:select/insert/delete/update等 --)
(select id=“findAll” resultType=“com.cy.pojo.Emp”)(!–resultType指定结果集用什么类型来封装 --)
select * from emp
(/select)
(/mapper) -
2.2 mybatis-config.xml
(configuration)
(!-- 配置开发环境 --)
(environments default=“test”) (!-- 可以指定用test还是test2的配置 --)
(environment id=“test”)
(!-- 配置事务管理方式 JDBC/MANAGED --)
(transactionManager type=“JDBC”)(/transactionManager)
(!-- 配置连接数据库的基本信息 POOLED(连接池)/UNPOOLED/JNDI --)
(dataSource type=“POOLED”)
(property name=“driver” value=“com.mysql.cj.jdbc.Driver” /)
(property name=“url” value=“jdbc:mysql:///yonghedb?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false” /)
(property name=“username” value=“root” /)
(property name=“password” value=“root” /)
(/dataSource)
(/environment)
(!-- (environment id=“test2”) 配置事务管理方式 JDBC/MANAGED (transactionManager
type=“JDBC”)(/transactionManager) 配置连接数据库的基本信息 POOLED(连接池)/UNPOOLED/JNDI
(dataSource type=“POOLED”) (property name=“driver” value=“com.mysql.cj.jdbc.Driver”/)
(property name=“url” value=“jdbc:mysql:///yonghedb?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false”/)
(property name=“username” value=“root”/) (property name=“password” value=“root”/)
(/dataSource) (/environment) --)
(/environments)
(!-- 导入mapper.xml文件(书写sql语句的文件) --)
(mappers)
(!-- 直接到类目录下更具填写的路径寻找指定的文件 --)
(mapper resource=“EmpMapper.xml”/)
(/mappers)
(/configuration) -
2.3 Test.java
static { //静态块,类加载的时候先执行一下,读取配置文件
try {
//1.读取mybatis核心配置文件(mybatis-config.xml)
InputStream in = Resources.getResourceAsStream(“mybatis-config.xml”);
//2.获取SqlSessionFactory工厂对象
SqlSessionFactory fac = new SqlSessionFactoryBuilder().build(in);
//3.获取SqlSession对象(打开了与数据库的连接)
session = fac.openSession();
}catch(Exception e){
e.printStackTrace();
}
}
-
//占位符
/*
* #{变量}:相当于JDBC中的?占位符
* JDBC:insert int emp values(null,?,?,?)
* Mybatis:insert int emp values(null,#{变量},#{变量},#{变量}) //为值占位
* ${变量}:为SQL语句中的语句片段占位
* select {变量} from emp
*/
查询:List(Emp) list = session.selectList(“EmpMapper.findAll”);
Emp emp = session.selectOne(“EmpMapper.findid”,id);//查询一条信息
//select * from emp where id=#{id}
List(Emp) List = session.selectList(“EmpMapper.findAll2”,map);
//select ${cols} from emp ${}只有一个参数也要封装
模糊查询:map.put(“name”, “%海%”); //或者"海"
List(Emp) List = session.selectList(“EmpMapper.findAllbyname”,map); (!-- KaTeX parse error: Expected 'EOF', got '#' at position 9: {}是直接拼接 #̲会转义 --)
//s…{name}%’
更新:int i=session.update(“EmpMapper.insert2”,map);//插入的信息封装到map中
//insert into emp value(null,#{name},#{job},#{salary}) //name job等分别对应map中的key,而map中的value则是需要插入的值
更新操作执行完之后记得提交事务:session.commit();//提交事务
删除:session.delete(“EmpMapper.delete”, i);//i要用包装类
//delete from emp where id=#{id}
来源:CSDN
作者:正在学Java的小陈
链接:https://blog.csdn.net/qq_39041451/article/details/104010629