前言:一直想写一篇Mybatis,但是最近忙于毕业论文答辩,今天终于有时间来总结一下Mybatis的知识点了。今天主要总结简单的CURD。
首先,我们一样来了解一下Mybatis是什么。
Mybatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射;简单来说就是不需要像JDBC一样去操作Connection, Statement, ResultSet 什么的。
接下来我们来简单的实现一下Mybatis的CURD操作:
1、新建一个项目,导入Mybatis的依赖包
传送门:ssm的jar包
2、创建数据库,创建数据表,准备几条数据
CREATE DATABASE test;
CREATE TABLE `user` (
`id` INT(8) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(10) DEFAULT NULL,
`password` VARCHAR(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `user`(`id`,`username`,`password`) VALUES (1,'admin','123'),(2,'asd','1212'),(3,'qwe','111');
3、创建实体模型,用于映射user表
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4、配置数据库文件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>
<typeAliases>
<typeAlias alias="User" type="com.java.pojo.User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--加载jdbc驱动-->
<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/java/mapper/UserMapper.xml"/>
</mappers>
</configuration>
5、在mapper包下创建UserMapper.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 namespace="com.java.mapper.UserMapper">
<select id="selectUser" resultType="com.java.pojo.User">
select * from user
</select>
<select id="getUser" parameterType="_int" resultType="com.java.pojo.User">
select * from user where id= #{id}
</select>
<delete id="deleteUserById" parameterType="_int">
delete from user where id = #{id}
</delete>
<insert id="addUser" parameterType="com.java.pojo.User">
insert into user (username,password) value (#{username},#{password})
</insert>
<update id="updateUser" parameterType="com.java.pojo.User">
update user set username=#{username}, password=#{password} where id=#{id}
</update>
</mapper>
6、编写测试类
public class UserTest {
public static void main(String[] args) throws IOException {
//根据配置文件mybatis-config.xml得到sqlSessionFactory 。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//然后再根据sqlSessionFactory 得到session
SqlSession session=sqlSessionFactory.openSession();
//删除id为1的
//User duser = new User();
//duser.setId(1);
//session.delete("deleteUserById",duser);
//获取id为3的
//User guser= session.selectOne("getUser",3);
//System.out.println(guser.getId()+"\t"+guser.getUsername()+"\t"+guser.getPassword());
//修改id为3的,前提是需要获取id为3的
//User guser= session.selectOne("getUser",3);
//guser.setUsername("修改名称");
//guser.setPassword("123456");
//session.update("updateUser",guser);
//新增数据
User adduser = new User();
adduser.setUsername("新增的");
adduser.setPassword("00000");
session.insert("addUser",adduser);
//查询数据
List<User> user = session.selectList("selectUser");
for (User u : user) {
System.out.println(u.getId()+"\t"+u.getUsername()+"\t"+u.getPassword());
}
}
}
以上就是我们实现CURD的过程,但是我们写SSM项目的时候一般不需要去生成SqlSessionFactory 工厂,我们一般会在Spring配置文件里面整合的时候配置SqlSessionFactory对象,而且我们会在mapper层编写数据接口,接口的方法名对应到配置文件的增删改查的id,大家了解一下就行!