Mybatis初步
使用Mybatis的第一个程序
环境:
- jdk1.8
- MySQL8.0
- maven3.8
- idea2021.3
这里使用maven项目
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.luoyudi</groupId>
<artifactId>mybatis-study</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mybatis-01</module>
<module>mybatis-02</module>
<module>mybatis-03</module>
<module>mybatis-04</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<!--运行警告解决-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--控制台乱码解决-->
<argLine>-Dfile.encoding=UTF-8</argLine>
</properties>
<!--依赖jar包-->
<dependencies>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
</project>
导入好jar包后需要进行mybatis的配置
需要创建mybatis-config.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="development">
<!--默认配置-->
<environment id="development">
<!--事务管理 JDBC-->
<transactionManager type="JDBC"/>
<!--数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db1"/>
<property name="username" value="root"/>
<property name="password" value="mysql"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="userMapper.xml"/>
</mappers>
</configuration>
首先就是对数据库的连接environments 标签,在这个标签中可以有多套配置environment 但是只可以使用一套配置
下面就可以开始编写java代码的了
在dao包下面创建UserMapper(就是UserDao从现在开始我们把UserDao重新叫做UserMapper)
package cn.luoyudi.dao;
import cn.luoyudi.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
// 查询所有用户
List<User> getUserList();
// 根据id查询用户
User getUserById(int i);
// 添加一个用户
int addUser(User user);
// 修改用户
int updateUser(User user);
// 删除用户
int deleteUser(int id);
// 使用map集合
int addUser2(Map<String, Object> map);
// 使用模糊查询查询用户信息
List<User> getUserListLike(String value);
}
在mapper中随便写几个方法以便我们等会测试使用
我们现在以第一个方法查询表中所有用户的作为例子
现在我们需要创建UserMapper.xml文件(这个文件就相当于以前的UserDaoImpl.java)文件用来实现dao接口的.
<?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">
<!--namespace 绑定一个mapper-->
<mapper namespace="cn.luoyudi.dao.UserMapper">
<!--查询语句 resultType 返回值类型-->
<select id="getUserList" resultType="cn.luoyudi.pojo.User">
select *
from user;
</select>
<select id="getUserById" resultType="cn.luoyudi.pojo.User" parameterType="int">
select *
from user
where id = #{id};
</select>
<insert id="addUser" parameterType="cn.luoyudi.pojo.User">
insert into user(name, gender, age, address, qq, email, username, password)
VALUE (#{name}, #{gender}, #{age}, #{address}, #{qq}, #{email}, #{username}, #{password});
</insert>
<update id="updateUser" parameterType="cn.luoyudi.pojo.User">
update user
set name = #{name},
gender=#{gender},
age=#{age}
where id = #{id};
</update>
<delete id="deleteUser" parameterType="int">
delete
from user
where id = #{id};
</delete>
<!--匹配map集合中的key-->
<insert id="addUser2" parameterType="map">
insert into user(name, gender, age, address, qq, email<!--, username, password-->)
VALUE (#{userName}, #{userGender}, #{userAge}, #{userAddress}, #{userQQnum},
#{userEmail} <!--#{username_}, #{Userpassword}-->);
</insert>
<!-- 模糊查询操作-->
<select id="getUserListLike" resultType="cn.luoyudi.pojo.User">
select *
from user
where name like #{value};
</select>
</mapper>
文件还是比较好理解的
首先就是标签,在标签中绑定一个mapper对象,namespace加上全路径名,下面就是每个标签后面加上sql语句
<select id="getUserList" resultType="cn.luoyudi.pojo.User">
select *
from user;
</select>
select表示这是一条查询语句
id加方法名,表示绑定一条方法,而resultType需要加上返回值类型
这里我们的返回值是User对象,就写上User的全路径名.
这时我们已经实现了一条方法的实现.
下面我们需要对这条方法进行测试
为了代码书写方便我们先写一个工具类 主要是为了获取sqlsession对象
package cn.luoyudi.utils;
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;
public class MybatisUtils {
//获取sqlSessionFactory对象
private static SqlSessionFactory sqlSessionFactory = null;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//我们可以从中获得 SqlSession 的实例。
//SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
因为我们导入了junit单元测试的jar包,所以直接使用注解.
package cn.luoyudi.dao;
import cn.luoyudi.pojo.User;
import cn.luoyudi.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class UserMapperTest {
@Test
public void getUserListTest() {
//获取sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
}
现在我们就可以测试代码,看看是否能够执行成功了.
下面是总结的关于mybatis各种查询用法,以及分页插件,逆向工程的用法