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();  
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Xxacker/article/details/85317468