炒沙作縻终不饱,缕冰文章费工巧。这篇文章主要讲述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.读取配置文件
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=""
推荐阅读
- 1月活动|51CTO博客#IT话题共建#,挑战7日连更!
- Go 每日一库之 gorilla/securecookie
- Spring MVC day01 请求参数问题及常用注解
- 题解——冒泡+二分查找
- Go 每日一库之 colly
- 为 tunny 提交的一次 PR
- 如何禁用WordPress主题编辑器
- 如何自定义主题中的get_the_post_navigation
- 如何更改WordPress页面中的主页按钮图像()