Mybatis
这部分的mybatis内容我是跟着b站狂神学习的,狂神讲的挺好的,过了一遍之后基本就能懂个大概,然后自己上手联系一下,写个小项目试试,基本上就没问题了
1.导入依赖pom.xml
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
2.配置数据库连接信息
db.properties
?useSSL=false&useUnicode=true&characterEncoding=UTF-8可加可不加,如果连接失败就有可能是因为没加上去而导致的
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username=root
password=newpassword
mybatis-config.xml
<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--环境配置,连接的数据库,这里使用的是MySQL-->
<!-- 实体类,简称 -设置别名 -->
<properties resource="db.properties"/>
<!-- 别名-->
<!--<typeAliases>
<typeAlias type="com.pojo.Diary" alias="diary"/>
</typeAliases>-->
<typeAliases>
<package name="com.pojo"/>
</typeAliases>
<!-- <typeAliases>
<typeAlias alias="DiaryDao" type="com.pojo.Diary" />
</typeAliases>-->
<environments default="mysql">
<environment id="mysql">
<!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
<transactionManager type="JDBC"></transactionManager>
<!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"></property>
<property name="url" value="${url}"/>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</dataSource>
</environment>
</environments>
<mappers> <!--这是告诉Mybatis区哪找持久化类的映射文件,对于在src下的文件直接写文件名, 如果在某包下,则要写明路径,如:com/mybatistest/config/User.xml-->
<mapper resource="com/dao/DiaryMapper.xml"></mapper>
<mapper resource="com/dao/UserMapper.xml"></mapper>
</mappers>
</configuration>
3.测试数据库是否连接成功
4.创建实体类
例如实体类pojo.Diary
@Data
public class Diary {
private int id;
private String name;
private String pwd;
}
通过lombok插件的Data注解,可以直接简化,省时省力,但是需要导入lombok依赖
lombok …1.16.10版本只能jdk10以下,如果jdk10以上,则需要高版本的,例如1.18.12
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
5.对应的Mapper映射文件
mapper文件在mybatis中一般是放在dao文件夹内
<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.DiaryDao">
<select id="getDiaryList" resultType="diary">
select * from user
</select>
<select id="getDiaryById" resultType="com.pojo.Diary">
select * from user where id=#{id}
</select>
<select id="getDiaryById2" resultType="com.pojo.Diary">
select * from user where id=#{id} and pwd=#{pwd};
</select>
<select id="getDiaryLike" resultType="com.pojo.Diary">
select * from user where name like #{value}
</select>
<insert id="insertDiaryList" parameterType="com.pojo.Diary">
insert into user(id,name,pwd) value(#{id},#{name},#{pwd})
</insert>
<insert id="insertDiaryList2" parameterType="com.pojo.Diary">
insert into user(id,name,pwd) value(#{userid},#{username},#{userpwd})
</insert>
<update id="updateDiaryList" parameterType="com.pojo.Diary">
update user set name=#{name} where id=#{id}
</update>
<delete id="deleteDiaryById" parameterType="com.pojo.Diary">
delete from user where id=#{id}
</delete>
</mapper>
注意!!:新建Mapper文件之后要到mybatis-config.xml之中添加,告诉Mybatis区哪找持久化类的映射文件,对于src下的文件可以直接写文件名
6.对应dao文件
dao文件,除去mapper也可以直接通过注解crud,但是一般注解的话只能简单操作
public interface DiaryDao {
@Select("select * from user where id=1")
List<Diary> getUsers();
@Select("select * from user where id=#{id}")
Diary getUserById(@Param("id") int id);
List<Diary> getDiaryList();
//id查询
Diary getDiaryById(int id);
//map查询
Diary getDiaryById2(Map<String, Object> map);
//模糊查询
List<Diary> getDiaryLike(String value);
int insertDiaryList(Diary diary);
//map插入
int insertDiaryList2(Map<String, Object> map);
int updateDiaryList(Diary diary);
int deleteDiaryById(int id);
}
7.创建MybatisUtils
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//读取配置文件
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
//初始化mybatis,创建SqlSessionFactory类实例
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession(true);
}
}
8.测试类测试结果
使用Junit测试,导入依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
@Test
public void test() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
DiaryDao diaryDao = sqlSession.getMapper(DiaryDao.class);
List<Diary> diaryList = diaryDao.getDiaryList();
for (Diary diary : diaryList) {
System.out.println(diary);
}
sqlSession.close();
}
DiaryDao diaryDao = sqlSession.getMapper(DiaryDao.class);
List<Diary> diaryList = diaryDao.getDiaryList();
for (Diary diary : diaryList) {
System.out.println(diary);
}
sqlSession.close();
}