SSM之Mybatis(一)(juejin.cn/post/719776…)
3.2 代码
-
创建User数据表
CREATE DATABASE `Mybatis_db`; use mybatis_db; create table `user`( `id` int(11) NOT NULL auto_increment, `username` varchar(32) NOT NULL COMENT `用户名称`, `birthday` datetime defaultNULL COMMENT `生日`, `sex` char(1) default NULL comment `性别`, `address` varchar(256) default NULL comment `生日`, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=UTF8; insert inot `user`(`id`, `username`, `birthday`, `sex`, `address`) values(1, `子豪`, `2020-11-11 00:00:00`, `男`, `海淀`), (2, `高启强`, `2020-12-12 00:00:00`, `男`, `海淀`)
-
创建Maven工程
<!-- 指定编码及版本 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> <maven.compiler.source>19</maven.compiler.source> <maven.compiler.target>19</maven.compiler.target> </properties> <dependencies> <!-- 引入 mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> </dependency> <!-- mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connect-java</artifactId> </dependency> <!-- junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>
-
编写User实体类
public class User { private Integer id; private String username; private Date birthday; private String sex; private String address; @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + ''' + ", birthday=" + birthday + ", sex='" + sex + ''' + ", address='" + address + ''' + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
-
编写Usermapper.xml映射文件
<?xm1 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="user"> <!--namespace:命名空间:与id属性共同构成唯一标识 namespace.id: user.findA11 resultType:返回结果类型(自动映射封装):要封装的实体的全路径 --> <select id="findA11" resultType="com.study.domain.User"> select * from user </select> </mapper>
-
编写sqlmapconfig.xml配置文件
数据库环境配置
映射关系配置的引入
<?xm1 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="user">
<!-- <!--namespace:命名空间:与id属性共同构成唯一标识 namespace.id: user.findA11-->
<!-- resultType:返回结果类型(自动映射封装):要封装的实体的全路径 –>-->
<select id="findA11" resultType="com.study.domain.User">
select * from user
</select>
<!-- add-->
<insert id="saveUser" parameterType="com.study.domain.User">
insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
</insert>
</mapper>
<?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>
<!-- <!--environments:运行环境-->-->
<environments default="development">
<environment id="development">
<!-- <!——当前的事务事务管理器是JDBC——>-->
<!-- <!--数据源信息 POOLED:使用mybatis的连接池-->-->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_db"/>
<property name="username" value="root"/>
<property name="password" value="***"/> // 密码
</dataSource>
</environment>
</environments>
<!-- 引入映射配置文件-->
<mappers>
<mapper resource="mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
-
编写测试代码
1.加载核心配置文件
2.获取是sqlsessionFactory工厂对象
3.获取SQLsession回话对象
4.执行SQL
5.打印结果
6.释放资源
// 快速入门测试方法
@Test
public void mybatisQuickStart() throws IOException {
// 1.加载核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
// 2.获取sq1SessionFactory工厂对象
SqlSessionFactory sq1SessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//3.获取sqlSession会话对象
SqlSession sq1Session = sq1SessionFactory.openSession();
//4.执行sql 参数:statementid: namespace.id
List<User> users = sq1Session.selectList("user.findA11");
// 5.遍历打印结果
for (User user : users) { System.out.println(user); }
// 6.关闭
sq1Session.close();
}