您的位置:首页 > 其它

MyBatis环境搭建:web项目的创建流程

2018-12-28 23:08 357 查看

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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐