1.什么是Mybatis框架:(会受到sql注入攻击)
(1)基于java的持久层框架,内部封装了jdbc,我们只需要关注于sql本身,不需要去处理加载驱动,创建连接,创建statement等繁琐操作。
(2)采用ORM思想解决了实体和数据库映射的问题(编写映射XML文件)
2.Mybatis框架的使用:(无须再写dao的实现类)
(1)导入依赖:
<!-- mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
(2)编写实体类:
@Data
public class User implements Serializable{
private Intager id;
private String username;
private Date birthday;
private String sex;
private String address;
}
(3)编写持久层接口
public interface UserDao{
List <User> findAll();
}
(4)编写映射文件:(UserDao.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
//对应相关的Dao
<mapper namespace="com.yuan.dao.UserDao">
//findAll方法
<select id="findAll" resultType="com.yuan.doman.User">
SELECT * FROM USER
<select>
<mapper>
(4)编写数据库配置文件:SqlConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
//环境配置
//默认环境
<environments default="mysql">
//mysql环境
<environment id="mysql">
//jdbc事务
<transactionManager type="JDBC"></transactionManager>
//POOLED连接池
<dataSource type="POOLED">
//四大参数
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</datasource>
</environment>
</environments>
<mappers>
<mapper resource="com.yuan.dao/UserDao.xml"/>
<mappers>
</configuration>
(5)代码测试:
public class UserDaoTest{
InputStream is = null;
SqlSessionFactory = null;
SqlSession session =null;
@Before
public void init() throws IOException{
//读取配置文件
is = Resource.getResourceAAsSream("SqlMapConfig.xml")
//创建会话工厂
factory = new SqlSessionFactoryBuilder().build(is);
//产生SQLSession对象
session = factory.openSession();
}
@After
public void close() throws IOException{
session.commit();
session.close();
is.close();
}
@Test
public void findAllTest(){
UserDao userDao = session.getMapper(UserDao.class);
System.out.println(userDao.findAll());
}
}
(6)#{}和${}有什么区别:
#{}是占位符
@Select("select * from user where id = #{uid} ")
${}是字符串拼接:
<property name="driver" value="${jdbc.driver}"></property>
(7)Mybatis常用注解:
@Insert:实现新增
@Update:实现更新
@Delete:实现删除
@Select:实现查询
@Result:实现结果集封装
@Results:可以与@Result 一起使用,封装多个结果集
@ResultMap:实现引用@Results 定义的封装
@One:实现一对一结果集封装
@Many:实现一对多结果集封装
@SelectProvider: 实现动态 SQL 映射
@CacheNamespace:实现注解二级缓存的使用
参考博客:https://www.jianshu.com/p/1d51d0fa9555
3.什么是MybatisPlus框架:
(1)由于Mabtis需要手写sql,就必须写大量的xml文件,很麻烦,由此诞生了Mybatisplus,对Mybatis做了增强
(2)它封装好了一些CRUD方法,使我们不需要在写xml文件了,直接调用这些方法就行,类似于JPA。
4. MybatisPlus框架的使用:(与spring整合)
(1)导入依赖:
<!-- mp依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.3</version>
</dependency>
(2)待总结