MyBatis 快速入门

炒沙作縻终不饱,缕冰文章费工巧。这篇文章主要讲述MyBatis 快速入门相关的知识,希望能为你提供帮助。

文章目录

  • 一、MyBatis快速入门
    • 1-1 MyBatis环境搭建
    • 1-2 环境搭建注意事项
    • 1-3 编写测试类
    • 1-4 使用注解开发
    • 1-5 入门案例分析
  • 二、 自定义 Mybatis 框架
  • 三、CRUD
    • 3-1 insert
    • 3-2 update
    • 3-3 delete
    • 3-4 模糊查询
    • 3-5 新增用户 id 的返回值
  • 四、输出结果封装
  • 五、SqlMapConfig.xml配置文件
    • 5-1 properties(属性)
    • 5-2 typeAliases(类型别名)
    • 5-3 mappers(映射器)

一、MyBatis快速入门 1-1 MyBatis环境搭建
  • 创建Maven并添加相应的坐标
< packaging> jar< /packaging> < dependencies> < dependency> < groupId> org.mybatis< /groupId> < artifactId> mybatis< /artifactId> < version> 3.4.5< /version> < /dependency> < dependency> < groupId> junit< /groupId> < artifactId> junit< /artifactId> < version> 4.10< /version> < scope> test< /scope> < /dependency> < dependency> < groupId> mysql< /groupId> < artifactId> mysql-connector-java< /artifactId> < version> 5.1.6< /version> < scope> runtime< /scope> < /dependency> < dependency> < groupId> log4j< /groupId> < artifactId> log4j< /artifactId> < version> 1.2.12< /version> < /dependency> < /dependencies>

  • 创建实体类User
private Integer id; private String username; private Date birthday; private String sex; private String address;

  • 创建IUserDao接口
/** 查询所有用户的方法 * @return */ List< User> findAll();

  • 创建主配置文件SqlMapConfig.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> < !-- 配置 mybatis 的环境 --> < environments default="mysql"> < !-- 配置 mysql 的环境 --> < environment id="mysql"> < !-- 配置事务的类型 --> < transactionManager type="JDBC"> < /transactionManager> < !-- 配置连接数据库的信息:用的是数据源(连接池) --> < dataSource type="POOLED"> < property name="driver" value="https://www.songbingjia.com/android/com.mysql.jdbc.Driver"/> < property name="url" value="https://www.songbingjia.com/android/jdbc:mysql:123.57.85.79:3306/eesy_mybatis"/> < property name="username" value="https://www.songbingjia.com/android/root"/> < property name="password" value="https://www.songbingjia.com/android/123456"/> < /dataSource> < /environment> < /environments> < !-- 告知 mybatis 映射配置的位置 --> < mappers> < mapper resource="com/qgc/dao/IUserDao.xml"/> < /mappers> < /configuration>

  • 在相应的接口下面创建IUserDao.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="com.qgc.dao.IUserDao"> < !-- 配置查询所有操作 --> < select id="findAll" resultType="com.qgc.domain.User"> select * from user < /select>

  • 编写测试类
1-2 环境搭建注意事项 1-3 编写测试类
//1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建 SqlSessionFactory 的构建者对象 //2.创建 SqlSessionFactory 的构建者对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //3.使用构建者创建工厂对象 SqlSessionFactory SqlSessionFactory factory = builder.build(in); //4.使用 SqlSessionFactory 生产 SqlSession 对象 SqlSession session = factory.openSession(); //5.使用 SqlSession 创建 dao 接口的代理对象 IUserDao userDao = session.getMapper(IUserDao.class); //6.使用代理对象执行查询所有方法 List< User> users = userDao.findAll(); for(User user : users) System.out.println(user); //7.释放资源 session.close(); in.close();

1-4 使用注解开发
  • 编写Dao接口并添加注解
public interface IUserDao /** 查询所有用户的方法 * @return */ @Select("select * from user") List< User> findAll();

  • 修改 SqlMapConfig.xml
< !-- 告知 mybatis 映射配置的位置 --> < mappers> < mapper class="com.itheima.dao.IUserDao"/> < /mappers>

1-5 入门案例分析 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4SY2b6Oy-1581404944090)(https://raw.githubusercontent.com/1519059197/img_note/master/小书匠/1581330590653.png)]
二、 自定义 Mybatis 框架 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nbv4z7sB-1581404944090)(https://raw.githubusercontent.com/1519059197/img_note/master/小书匠/自定义Mybatis分析.png)]
自定义MyBatis下载:
?链接:https://pan.baidu.com/s/1t9mh1qJzN1w7RYARjEoySw
?提取码:acjj
三、CRUD 3-1 insert
  • 在dao接口中加入对应的方法
void add(User user);

  • 在映射配置文件中加入对应的sql语句
< insert id="add" parameterType="com.qgc.Domain.User"> insert into user (username,birthday,address,sex) values (#username,#birthday,#address,#sex); < /insert>

3-2 update
  • 在dao接口中加入对应的方法
void update(User user);

  • 在映射配置文件中加入对应的sql语句
< update id="update" parameterType="com.qgc.Domain.User"> update user set username = #username,birthday = #birthday,address = #address,sex = #sex where id = #id < /update>

3-3 delete
  • 在dao接口中加入对应的方法
void delete(Integer id);

  • 在映射配置文件中加入对应的sql语句
    由于此处的参数只有一个,所以qqq为占位符
< delete id="delete" parameterType="Integer"> delete from user where id = #qqq; < /delete>

3-4 模糊查询
  • 在dao接口中加入对应的方法
List< User> findByName(String name);

  • 在映射配置文件中加入对应的sql语句

    select * from user where username like #name
  • 测试文件
@Test public void findByName() List< User> list = userDao.findByName("%1%"); for(User user : list) System.out.println(user);

3-5 新增用户 id 的返回值
< insert id="add" parameterType="com.qgc.Domain.User"> < selectKey keyColumn="id" keyProperty="id" resultType="int" order="AFTER"> select last_insert_id(); < /selectKey> insert into user (username,birthday,address,sex) values (#username,#birthday,#address,#sex); < /insert>

四、输出结果封装
  • 给查询的数据起别名的方式
< select id="findAll" resultType="com.itheima.domain.User"> select id as userId,username as userName,birthday as userBirthday, sex as userSex,address as userAddress from user < /select>

  • 使用resultMap 结果类型
< resultMap type="com.itheima.domain.User" id="userMap"> < id column="id" property="userId"/> < result column="username" property="userName"/> < result column="sex" property="userSex"/> < result column="address" property="userAddress"/> < result column="birthday" property="userBirthday"/> < /resultMap> id 标签:用于指定主键字段 result 标签:用于指定非主键字段 column 属性:用于指定数据库列名 property 属性:用于指定实体类属性名称

映射配置
< !-- 配置查询所有操作 --> < select id="findAll" resultMap="userMap"> select * from user < /select>

五、SqlMapConfig.xml配置文件 5-1 properties(属性)
  • 第一种
< properties> < property name="jdbc.driver" value="https://www.songbingjia.com/android/com.mysql.jdbc.Driver"/> < property name="jdbc.url" value="https://www.songbingjia.com/android/jdbc:mysql://localhost:3306/eesy"/> < property name="jdbc.username" value="https://www.songbingjia.com/android/root"/> < property name="jdbc.password" value="https://www.songbingjia.com/android/1234"/> < /properties>

  • 第二种
    在 classpath 下定义 db.properties 文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/eesy jdbc.username=root jdbc.password=1234

配置properties
< !-- 配置连接数据库的信息 resource 属性:用于指定 properties 配置文件的位置,要求配置文件必须在类路径下 resource="jdbcConfig.properties" url 属性: URL: Uniform Resource Locator 统一资源定位符 http://localhost:8080/mystroe/CategoryServlet URL 协议 主机 端口 URI URI:Uniform Resource Identifier 统一资源标识符 /mystroe/CategoryServlet 它是可以在 web 应用中唯一定位一个资源的路径 url= file:///D:/IdeaProjects/day02_eesy_01mybatisCRUD/src/main/resources/jdbcConfig.prop erties" --> < properties resource="jdbcConfig.properties"> < /properties>

5-2 typeAliases(类型别名) 【MyBatis 快速入门】在 SqlMapConfig.xml 中配置:
< typeAliases> < !-- 单个别名定义 --> < typeAlias alias="user" type="com.itheima.domain.User"/> < !-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) --> < package name="com.itheima.domain"/> < package name="其它包"/> < /typeAliases>

5-3 mappers(映射器)
  • resource=" "
  • class=" "
  • package name=""

    推荐阅读