說一下MyBaties的快速入門
環境:IDEA 開發工具,MAVEN,JDK9。
先大概總體說一下,步驟:
- 添加MyBatis的座標
- 創建user數據表
- 編寫User實體類
- 編寫映射文件UserMapper.xml
- 編寫核心文件SqlMapConfig.xml
- 編寫測試類
第一步新建一個項目或者model
File>new>Model,然後選中Maven:
點擊Next,輸入一些內容點Next....到最後finish。生成的可能要差一點,最後自己補充一些就好。
第二步導入JAR
在項目的pom.xml文件中添加:
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
第三步 創建一個domain,或者叫Model 一個實體:User,這個要和你的數據庫的表中的字段對應起來。
比如我數據庫是這樣的:
那麼實體就應該是:
package com.lxl.domain; public class User { private int id; private String username; private String password; @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + 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; } }
第四步:編寫Mapper映射文件:
<?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="userMapper"> <delete id="delete" parameterType="java.lang.Integer"> delete from user where id = #{#id} </delete> <update id="update" parameterType="com.lxl.domain.User"> update user set username= #{username},password=#{password} where id = #{id} </update> <insert id="add" parameterType="com.lxl.domain.User"> insert into user values (#{id},#{username},#{password}) </insert> <select id="findAll" resultType="user"> select * from user </select> </mapper>
第五步:編寫SqlMapperConfig.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> <properties resource="jdbc.properties"></properties> <!--自定義別名 注意順序--> <typeAliases> <typeAlias type="com.lxl.domain.User" alias="user"/> </typeAliases> <!--配置數據源環境--> <environments default="developement"> <environment id="developement"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/lxl/mapper/UserMapper.xml"/> </mappers> </configuration>
第六步:編寫測試類MyBatisTest:
package com.lxl; import com.lxl.domain.User; 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 org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class mybatiesTest { @Test public void Test4() throws IOException { //加載核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig.xml"); //獲得sqlSession工廠對象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //獲得sqlSession對象 SqlSession sqlSession = sqlSessionFactory.openSession(); //執行sql語句 int insert = sqlSession.delete("userMapper.delete",4); //打印結果 System.out.println(insert); //提交事務 sqlSession.commit(); //釋放資源 sqlSession.close(); } @Test public void Test3() throws IOException { //加載核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig.xml"); //獲得sqlSession工廠對象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //獲得sqlSession對象 SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setId(4); user.setUsername("lixi"); user.setPassword("lisi"); //執行sql語句 int insert = sqlSession.update("userMapper.update",user); //打印結果 System.out.println(insert); //提交事務 sqlSession.commit(); //釋放資源 sqlSession.close(); } @Test public void Test2() throws IOException { //加載核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig.xml"); //獲得sqlSession工廠對象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //獲得sqlSession對象 SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); // user.setId(3); user.setUsername("lixi"); user.setPassword("123456"); //執行sql語句 int insert = sqlSession.insert("userMapper.add",user); //打印結果 System.out.println(insert); //提交事務 sqlSession.commit(); //釋放資源 sqlSession.close(); } @Test public void Test1() throws IOException { //加載核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig.xml"); //獲得sqlSession工廠對象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //獲得sqlSession對象 SqlSession sqlSession = sqlSessionFactory.openSession(); //執行sql語句 List<User> userList = sqlSession.selectList("userMapper.findAll"); //打印結果 System.out.println(userList); //釋放資源 sqlSession.close(); } }
然後給個總結:Mapper映射文件中的<mapper namespace="userMapper"> 這一行中的namespace,是需要和dao層對應的實體的全限定名(包名+類名)對應起來的,這裏並沒有對應,然後是每一個select、update、delete、的id是需要和Dao層的接口的名字對應起來,這裏也沒有對應,甚至都沒有提到Dao,只是一個快速入門。
然後說以下配置文件 Mapper映射文件中,需要注意的是namespace,以及每個select、update、delete的id。
SqlMapperConfig配置文件中常用的: