Mybatis學習記錄-----Mybatis入門(基本增刪改查方法)
阿新 • • 發佈:2018-12-07
方便回顧和加強記憶,記錄一下mybatis的使用方法。mybatis的官網文件:http://www.mybatis.org/mybatis-3/zh/getting-started.html。
目錄
7、新增users表sql的對映檔案userMapper.xml
1、建立資料庫
建立資料庫和表。
create database mybatis;
use mybatis;
CREATE TABLE c_user(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(32), age INT);
2、建立maven專案
具體流程檢視IDEA建立基本maven專案。
為了之後理解專案結構,提前把最終的目錄貼出來
3、匯入需要的依賴包
在pom.xml匯入mybatis和mysql的依賴包,這樣就不需要自己匯入包。
<?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>czz.study</groupId> <artifactId>mybatis</artifactId> <version>1.0-SNAPSHOT</version> <name>mybatis</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <java.version>1.8</java.version> </properties> <dependencies> <!--Mybatis依賴包--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <!--Mysql驅動包--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <!--junit測試依賴包--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.0.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.20.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build> </project>
4、建立Mybatis配置檔案conf.xml
XML 配置檔案(configuration XML)中包含了對 MyBatis 系統的核心設定,包含獲取資料庫連線例項的資料來源(DataSource)和決定事務作用域和控制方式的事務管理器(TransactionManager)。在src下建立一個conf.xml檔案,如下圖所示。這裡目前只添加了資料來源相關的配置(Mysql)。
<?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"/> <property name="username" value="root"/> <property name="password" value="Jovaunn1"/> </dataSource> </environment> </environments> </configuration>
5、建立實體類
建立表對應實體類,並新增set/get/toString相關方法:
package czz.study.domain;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id 主鍵id
*/
private Integer id;
/**
* name 名字
*/
private String name;
/**
* age 年齡
*/
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';
}
}
6、建立UserMapper.java
在mapper包內建立UserMapper.java,並新增需要的功能介面,現在只演示簡單的增刪改查功能。
package czz.study.mapper;
import czz.study.domain.User;
import org.apache.ibatis.annotations.Param;
public interface UserMapper {
/**
* 根據主鍵id查詢使用者資訊
*/
User getUser(int id);
/**
* 新增使用者資訊
*/
boolean insertUser(User user);
/**
* 更新主鍵id對應的使用者資訊
*/
//@Param註解的作用是給引數命名,引數命名後就能根據名字得到引數值,正確的將引數傳入sql語句中
//如果不加,程式會出現找不到user異常
boolean updateUser(@Param("id") int id, @Param("user") User user);
/**
* 刪除主鍵id對應的使用者資訊
*/
boolean deleteUser(int id);
}
7、新增users表sql的對映檔案userMapper.xml
userMapper.xml包含UserMapper功能相關的sql語句。
<?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,namespace的值習慣上設定成包名+功能介面對映檔名,這樣就能夠保證namespace的值是唯一的
例如namespace="czz.study.Mapper.UserMapper"就是czz.study.Mapper(包名)+UserMapper
-->
<mapper namespace="czz.study.mapper.UserMapper">
<resultMap id="User" type="czz.study.domain.User">
<id property="id" column="id" javaType="java.lang.Integer"></id>
<result property="userName" column="name" javaType="java.lang.String"></result>
<result property="age" column="age" javaType="java.lang.Integer"></result>
</resultMap>
<!--根據id查詢得到一個user物件-->
<select id="getUser" parameterType="int" resultMap="User">
select * from c_user where id = #{id}
</select>
<!--新增一個新的使用者-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into c_user (name,age) values (#{userName},#{age})
</insert>
<!--更新id對應的使用者資訊-->
<update id="updateUser">
update c_user set name=#{user.userName},age=#{user.age} where id=#{id}
</update>
<!--刪除id對應的使用者資訊-->
<delete id="deleteUser" parameterType="int">
delete from c_user where id=#{id}
</delete>
</mapper>
8、在conf.xml註冊userMapper.xml
秩序在conf.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">
<transactionManager type="JDBC"/>
<!-- 配置資料庫連線資訊 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="Jovaunn1"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--告知對映檔案方式1,一個一個的配置-->
<mapper resource="mapperXml/userMapper.xml"/>
<!-- 告知對映檔案方式2,自動掃描包內的Mapper介面與配置檔案
注意:此種方法要求mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。-->
<!--<package name="czz.study.mapper"/>-->
<!--告知對映檔案方式3,一個一個的配置-->
<!--注意:此種方法要求mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。-->
<!--<mapper class="czz.study.mapper.UserMapper"/>-->
</mappers>
</configuration>
9、建立SqlSessionFactory工具類
package czz.study.factory;
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.Reader;
public class MybatisFactory {
public static SqlSessionFactory sessionFactory;
static {
try {
//使用MyBatis提供的Resources類載入mybatis的配置檔案
InputStream inputStream = Resources.getResourceAsStream("conf.xml");
//構建sqlSession的工廠
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 獲取SqlSession
*/
public static SqlSession getSession() {
return sessionFactory.openSession();
}
}
10、程式碼測試
在main方法中測試增刪改查功能
package czz.study;
import czz.study.domain.User;
import czz.study.factory.MybatisFactory;
import czz.study.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
/**
* Hello world!
*/
public class App {
public static void main(String[] args) {
SqlSession sqlSession = MybatisFactory.getSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User insertUser = new User();
insertUser.setName("小花");
insertUser.setAge(33);
userMapper.insertUser(insertUser);
sqlSession.commit();
System.out.println("新增使用者id:" + insertUser.getId());
System.out.println("----------------------------------------------------------------");
User user = userMapper.getUser(insertUser.getId());
System.out.println("查詢使用者資訊:" + user);
System.out.println("----------------------------------------------------------------");
User updateUser = new User();
updateUser.setName("小黑");
updateUser.setAge(44);
userMapper.updateUser(insertUser.getId(), updateUser);
System.out.println("查詢更新後的使用者資訊:" + userMapper.getUser(insertUser.getId()));
sqlSession.commit();
System.out.println("----------------------------------------------------------------");
userMapper.deleteUser(insertUser.getId());
sqlSession.commit();
System.out.println("刪除使用者後查詢結果:" + userMapper.getUser(insertUser.getId()));
sqlSession.close();
}
}
以上,就是Mybatis最基本的用法,Mybatis其他功能和注意事項之後繼續補充。放上某一次執行的結果。