Mybatis环境搭建以及增删改查
-
搭建数据库并创建数据库表
创建mybatis数据库并且创建一个名为user的表具有id、name、password三个字段 -
导入相关的包
这里采用最简单的配置,只导入MySQL驱动包和mybatis包(有需要还可以导入log4j和Junit和lombok)
<dependencies>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
- 编写mybatis核心配置文件
新建xml文件名字取为mybatisConfig.xml
在核心配置文件中定义数据源以及mapper映射等信息
(这里的&需要转义为&
)
<?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">
<transactionManager type="JDBC"/>
<!--数据源-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&charactorEncoding=utf-8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="userMapper.xml"/>
</mappers>
</configuration>
- 编写mybatis工具类
Mybatis是读取核心配置文件,使用SqlSessionFactory来创建SqlSession对象,工具类定义一个方法去返回一个SqlSession对象。
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatisConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
- 创建实体类
根据数据库编写实体类,User对象有id,name和password三个属性,其中在数据库中id为主键并且自增。所以在全参数的构造函数和无参数的构造函数之外,新增一个只有name和password构造函数,用于直接将对象插入数据库中而不用关心它的主键。 - 编写mapper接口类
这里的mapper接口和jdbc中的接口相似,不一样的是这里的mapper接口是使用xml文件代替实现类。接口定义了操作数据库的方法。
public interface UserMapper {
//用于查询表中全部数据
List<User> selectUser();
//根据id查询数据
User selectUserById(int id);
//增加
void insertUser(User user);
//根据id删除
int delUserById(int id);
//根据集合批量删除
int delUserByGroup(List<Integer> list);
//修改
void updateUser(User user);
}
- 编写mapper.xml配置文件并且将mapper注册到mybatis核心配置文件
mapper标签中的namespace标签即是上方接口的全类名,使xml文件与接口相联系。
mapper.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">
<!--将接口与mapper相关联-->
<mapper namespace="pojo.UserMapper">
<!--相当于接口方法的实现并声明返回值类型,甚至可以设置参数-->
<select id="selectUser" resultType="pojo.User">
select * from user
</select>
<!--根据id查询-->
<select id="selectUserById" resultType="pojo.User" parameterType="int">
select * from user where id = #{id}
</select>
<!--新增User-->
<insert id="insertUser" parameterType="pojo.User">
insert into user (name,password) values(#{name},#{password})
</insert>
<!--根据id删除-->
<delete id="delUserById" parameterType="int">
delete from user where id = #{id}
</delete>
<!--根据集合批量删除-->
<delete id="delUserByGroup" parameterType="int">
delete from user where id in
<foreach collection="list" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
<!--修改-->
<update id="updateUser" parameterType="pojo.User">
update user set name = #{name},password = #{password} where id = #{id}
</update>
</mapper>
- 测试使用
通过工具类获得sqlSession对象,用于对事务进行操作(增删改均需要提交事务)
通过sqlSession对象的getMapper方法获得接口对象
通过接口对象的方法来进行相应的增删改查操作
SqlSession session = MybatisUtils.getSession();
UserMapper usermapper = session.getMapper(UserMapper.class);