Mybatis(五):Mybatis的三種使用方式
阿新 • • 發佈:2018-11-14
注意,這篇文章只介紹mybatis單獨使用時如何操作,是沒有用到spring的,如果需要了解mybatis和spring如何搭建,請移步這裡。
方式一:不使用mapper介面
步驟
1.pom檔案裡新增jar包
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency>
2.準備Mybatis的配置檔案
<?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> <settings> <!-- 列印查詢語句 --> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> <!-- 和Spring整合後environment配置都會被幹掉 --> <environments default="development"> <environment id="development"> <!-- 使用jdbc事務管理,目前由mybatis來管理 --> <transactionManager type="JDBC"/> <!-- 資料庫連線池,目前由mybatis來管理 --> <dataSource type="POOLED"><!--有關於mysql資料庫的各種資訊--> <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="123456" /> </dataSource> </environment> </environments> <mappers> <!--將操作配置檔案User.xml系新增進mapper--> <mapper resource="mybatis/user.xml" /> </mappers> </configuration>
更多的引數配置,參閱:Mybatis(一):MyBatis配置檔案config.xml詳解
3.準備實體類
public class User { private String id; private String password; private String username; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } public String getUsername(){ return username; } public void setUsername(String username){ this.username=username; } }
4.準備實體對應的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 namespace="user"> <!-- 注意,因為這邊沒有用到mapper介面,所以這裡的namespace不需要是完全的類名 --> <!-- 通過id查詢使用者 --> <select id="findUserById" parameterType="int" resultType="com.mvc.User"> <include refid="selectStr"/> id = #{id} </select> <!--通過name查詢一個list的使用者,模糊匹配--> <select id="findUserByName" parameterType="java.lang.String" resultType="com.mvc.User"> select * from user where name like '%${value}%' </select> <!--插入使用者資訊--> <insert id="insertUser" parameterType="com.mvc.User"> <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> select uuid() <!-- 這裡是對於主鍵屬性的id進行賦值 --> </selectKey> insert into user(id,username,password) values(#{id},#{username},#{password}) </insert> <!--刪除使用者資訊--> <delete id="deleteUser" parameterType="java.lang.Integer"> delete from user where id=#{id} </delete> <!--更新使用者資訊--> <update id="updateUser" parameterType="com.mvc.User"> <!-- update user set name=#{name},password=#{password} where id=#{id} --> update user <set> <if test="username != null && username != ''">username=#{username},</if> <if test="password != null && password != ''">password=#{password},</if> </set> where id= #{id} </update> </mapper>
5.準備一個獲取sqlsession的工具類
import java.io.IOException; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MybatisSessionUtil { static SqlSessionFactory sqlSessionFactory = null; static{ SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); try { sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml")); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSession(){ return sqlSessionFactory.openSession(); } }
6.準備dao
import org.apache.ibatis.session.SqlSession; import com.mvc.User; import com.mybatis.mapper.User2Mapper; public class UserDao { SqlSession session = MybatisSessionUtil.getSession(); public int insert(User user){ int rint = session.insert("user.insertUser",user); // 第一個引數是mapper xml裡的namespace+MappedStatement對應的id session.commit();// 不要忘記提交 return rint; } }
7.看下資料裡user表
8.測試類
import com.mvc.User; import com.mybatis.util.UserDao; public class MybatisNoSpringTest { public static void main(String[] args) { UserDao userDao = new UserDao(); User user = new User(); user.setUsername("wwwttt"); user.setPassword("33333"); if (userDao.insert(user) == 1) { System.out.println("insert success..."); }else{ System.out.println("insert fail..."); } } }
方式二:使用mapper介面
步驟
1.pom檔案裡新增jar包
同方式一
2.準備Mybatis的配置檔案
同方式一,就是換成新的user mapper xml
<mappers> <!--將操作配置檔案系新增進mapper--> <mapper resource="mybatis/User2Mapper.xml" /> </mappers>
3.準備實體類
同方式一
4.準備mapper介面(這個是比方式一多出來的)
import com.mvc.User; // 這邊介面名要和xml對映的檔名一致 public interface User2Mapper { int insertUser(User user); // 其它方法略。。。 }
5.準備實體對應的mapper對映xml檔案
同方式一,只是namespace需要注意
<?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"> <!-- 這邊的namespace一定要寫完整正確 --> <mapper namespace="com.mybatis.mapper.User2Mapper"> <!-- 通過id查詢使用者 --> <select id="findUserById" parameterType="int" resultType="com.mvc.User"> select * from user where id = #{id} </select> <!--通過name查詢一個list的使用者,模糊匹配--> <select id="findUserByName" parameterType="java.lang.String" resultType="com.mvc.User"> select * from user where name like '%${value}%' </select> <!--插入使用者資訊--> <insert id="insertUser" parameterType="com.mvc.User"> <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> select uuid() <!-- 這裡是對於主鍵屬性的id進行賦值 --> </selectKey> insert into user(id,username,password) values(#{id},#{username},#{password}) </insert> <!--刪除使用者資訊--> <delete id="deleteUser" parameterType="java.lang.Integer"> delete from user where id=#{id} </delete> <!--更新使用者資訊--> <update id="updateUser" parameterType="com.mvc.User"> update user set name=#{name},password=#{password} where id=#{id} </update> </mapper>
6.準備一個獲取sqlsession的工具類
同方式一
7.準備dao
import org.apache.ibatis.session.SqlSession; import com.mvc.User; import com.mybatis.mapper.User2Mapper; public class UserDao { SqlSession session = MybatisSessionUtil.getSession(); // 使用介面方式 public int insert2(User user){ User2Mapper user2Mapper = session.getMapper(User2Mapper.class); int rint = user2Mapper.insertUser(user); session.commit(); return rint; } }
8.測試類
import com.mvc.User; import com.mybatis.util.UserDao; public class MybatisNoSpringTest { public static void main(String[] args) { UserDao userDao = new UserDao(); User user = new User(); user.setUsername("wwwttt"); user.setPassword("33333"); // 使用mapper介面方式 if (userDao.insert2(user) == 1) { System.out.println("insert success..."); }else{ System.out.println("insert fail..."); } } }
方式三:使用mybatis框架的註解編寫sql
這種方式,我不推薦使用,本來我們使用mybatis就是為了sql編寫和java程式碼能分開解耦,有更大的靈活性,使用這種方式反而不好。
另外,myatis官方也不推薦這種方式,官方說了,要想使用mybatis強大的sql編寫功能,寫在註解裡是受到限制的,只有寫在mapper xml裡才能發揮的玲離盡致。
所以,這種方法我就不記錄了,有需要的同學自行百度。