前言:一直想寫一篇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,大家瞭解一下就行!