1. 程式人生 > >MyBatis環境搭建:web專案的建立流程

MyBatis環境搭建:web專案的建立流程

MyBatis:web專案的建立

作用:對底層的JDBC進行封裝
優點:使用 MyBatis 不用編寫Dao實現類,只用寫sql命令就好

一、環境搭建

  1. 導jar包
    在這裡插入圖片描述
  2. 建資料庫表
create table `user`(
	`id` varchar(64) NOT NULL COMMENT 'ID',
	`name` varchar(255) NOT NULL COMMENT '姓名',
	`age` int NOT NULL COMMENT '年齡',
	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET
=utf8 COMMENT='使用者表';
  1. 編寫實體類
public class UserEntity {	
	private String id;	// ID
	private String name;	// 姓名
	private String age;	// 年齡
	
	//set、get、toString方法
	......
}
  1. 編寫Mapper檔案
    檔案作用:編寫需要執行的SQL命令
    在框架的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="dao.UserDao"> <sql id="userColumns"> a.id AS "id", a.name AS "name", a.age AS "age" </sql> <sql id="userJoins"></sql> <!-- 查所有使用者:select * from user; --> <select id="findAllList" resultType="User"> SELECT <include
refid="userColumns"/>
FROM user a <include refid="userJoins"/> </select> <!-- 查 未刪除 的使用者: select * from user where del_flag = 0; --> <select id="findList" resultType="User"> SELECT <include refid="userColumns"/> FROM user a <include refid="userJoins"/> <where> a.del_flag = #{DEL_FLAG_NORMAL} </where> </select> <!-- 根據 ID 查使用者:select * from user where id = 1; --> <select id="get" resultType="User"> SELECT <include refid="userColumns"/> FROM user a <include refid="userJoins"/> WHERE a.id = #{id} </select> <!-- 新增使用者: insert into user values(default, 'xxacker', 18); --> <insert id="insert"> INSERT INTO user(id, name, age) VALUES (#{id}, #{name}, #{age}) </insert> <!-- 更新使用者:update user set name = 'xxa', age = 19 where id = 1; --> <update id="update"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <!-- 刪除使用者:delete from user where id = 1; --> <update id="delete"> DELETE FROM user WHERE id = #{id} </update> </mapper>
  1. 在src下新建全域性配置檔案(編寫JDBC)mybatis.xml檔案
    5.1 在全域性配置檔案中引入dtd或scheme
    在這裡插入圖片描述
    在這裡插入圖片描述
    匯入dtd後,在書寫web.xml檔案時會有提示。。。
    xml檔案不匯入dtd檔案,沒有提示。。。
  <?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>  
        <!-- changes from the defaults -->  
        <setting name="lazyLoadingEnabled" value="false" />  
    </settings>  
    
    <typeAliases>  
        <!-- 這裡給實體類取別名,方便在mapper配置檔案中使用 -->
        <typeAlias alias="User" type="entity.UserEntity"/>
    </typeAliases> 

   <!-- default 引用 environment 的 id,當前所使用的環境 -->
  	<environments default="default">
  		<!-- 宣告可以使用的環境 -->
  		<environment id="default">
  			<!-- 使用原生 JDBC 事務 -->
  			<transactionManager type="JDBC"></transactionManager>
  			
              <dataSource type="POOLED">
  				<property name="driver" value="com.mysql.jdbc.Driver"/>
  				<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
  				<property name="username" value="root"/>
  				<property name="password" value="smallming"/>
  			</dataSource>
  		</environment>
      </environments>
      
       <!-- 這裡新增的是執行CRUD操作的介面對應的配置檔案(xml檔案) -->  
      <mappers>
  		<mapper resource="com/bjsxt/mapper/FlowerMapper.xml"/>
  	</mappers>
  </configuration>
  1. 測試檔案:
//相當於Service層
public class Test{
	private static UserDao userDao;
	private static Reader reader; 
	private static SqlSessionFactory sessionFactory;        
	private static SqlSession session = null;
	
    public static void main(String[] args){    	
    	// Session Factory
    	Initialize("mybatis_config.xml"); 
    	try{
    		List<UserEntity> userList = userDao.findAllList();
    		
    		for(UserEntity user:userList){
    			System.out.println("ID:" + user.getId()
    							+"Name:" + user.getName()
				    			+"Age:" + user.getAge());
    		}
    		session.close();
        }  
        catch (Exception e) {  
            e.printStackTrace();  
        }
    }
    
    private static void Initialize(String configFile){
        try {  
        	//通過流的方式,把 MyBatis 的配置讀入記憶體
        	reader = Resources.getResourceAsReader(configFile);	  //載入配置檔案      	
        	
        	//前面是工廠-> 例項化物件時,是構建者設計模式,標識:Builder()
	        sessionFactory = new SqlSessionFactoryBuilder().build(reader);	//讀取配置資訊
            session = sessionFactory.openSession();     //session中封裝了全部的CRUD
            userDao = session.getMapper(UserDao.class);   //相當於一個實現抽象類UserDao
        } catch (Exception e) {  
            e.printStackTrace();  
        }
    }
}