01_根据Id查询User的数据

时间:2022-12-05 21:50:18

【工程目录】

01_根据Id查询User的数据

【数据库表中内容 user表】

01_根据Id查询User的数据

【sqlMapConfig.xml配置文件主要内容】

简述:sqlMapConfig.xml配置文件主要有两个作用:

1.配置和数据连接的相关信息,例如事务管理、数据库连接池等信息。

2.加载映射文件,例如本项目中的user.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> <!-- 和Spring整合之后这些配置将删除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/mybatisdb?useUnicode=true&amp;characterEncoding=UTF-8" />
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments> <!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/user.xml"/>
</mappers> </configuration>

【user.xml】

在user.xml文件中编写相关的CRUD的代码

<?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="test">
<select id="findUserById" parameterType="int" resultType="com.Higgin.Mybatis.po.User">
SELECT * from USER WHERE id=#{id}
</select>
</mapper>

解释:

1.namespace命名空间,作用就是对sql进行分类化管理。注意:使用mapper代理方法开发,namespace有特殊重要的作用。

2.在<mapper>映射文件中可以配置很多的sql语句,除了<select>还有<delete>、<update>、<insert>等等

3.通过select 执行数据库查询,将sql语句封装到mapperStatement对象中,所以将id成为statement的id

4.parameterType:指定输入参数的类型,这里指定是int类型

5.#{}:表示一个占位符

6.#{id}:其中的占位符表示接入输入的参数,参数名称为id,若输入的参数是简单类型,#{}中的参数名称可以任意,既可以是value或者其他名称

7.resultType:指定sql输出结果所映射的java类型对象,select指定resultType表示将单条记录映射成的User对象

【log4j.properties】

#Global logging configuration
#在开发环境下,日志级别要设置成DEBUG
log4j.rootLogger=DEBUG,stdout
#Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

【User.java】

 package com.Higgin.Mybatis.po;

 import java.util.Date;

 public class User {
//属性名和数据库表字段对应
private int id;
private String username;
private String sex;
private Date birthday;
private String address;
//忽略get、set、toString方法....
}

【MyBatisTest.java】

public class MyBatisTest {
@Test
public void testFindUserByID() throws IOException{
//mybatis配置文件
String resource="SqlMapConfig.xml"; //得到配置文件
InputStream inputStream=Resources.getResourceAsStream(resource); //创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); //通过工厂得到SqlSession
SqlSession sqlSession=sqlSessionFactory.openSession(); //通过SqlSession操作数据库
//第一个参数:映射文件中statement的id,等于:namespace+"."+statement的id
//第二个参数:指定映射文件中的所匹配的parameterType类型的参数
User user=sqlSession.selectOne("test.findUserById", 2);
System.out.println(user.toString());
//释放资源
sqlSession.close();
}
}

【运行结果】

01_根据Id查询User的数据