入门_MyBatis中文网
配置相关依赖
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok(非必要) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
准备表
CREATE TABLE user_info(
user_id BIGINT AUTO_INCREMENT COMMENT '用户ID' PRIMARY KEY,
username VARCHAR(50) NOT NULL COMMENT '用户名',
user_password VARCHAR(50) NOT NULL COMMENT '用户密码',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_time DATETIME NOT NULL COMMENT '更新时间'
)CHARSET = utf8;
对应准备实体类UserInfo
@Data
public class UserInfo {
private Long userId;
private String userName;
private String userPassword;
private Date createTime;
private Date updateTime;
}
应用lombok中的@Data自动实现get,set,tostring...
新建配置mybatis-config.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="userinfomapper.xml"/>
</mappers>
</configuration>
配置其中对应的resource
<?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="org.mybatis.example.BlogMapper">
<select id="selectUser" resultType="com.xxx.po.UserInfo">
select * from user_info where user_id = #{id}
</select>
</mapper>
实现查询
public static void main ( String[] args ) throws Exception{
//构建 SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//从 SqlSessionFactory 中获取 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//两个参数对应了userinfomapper中select的id和查询条件#{id}
UserInfo userInfo=sqlSession.selectOne("selectUser",1);
System.out.println(userInfo);
}
结果只获取到UserInfo(userId=null, userName=zhangsan, userPassword=null, createTime=null, updateTime=null)
原因:未使用驼峰映射(数据库中的字段为user_id,实体类为userId)
在mybatis-config.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>
<settings>
<!-- 开启驼峰映射 ,为自定义的SQL语句服务-->
<!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 打印sql日志 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="userinfomapper.xml"/>
</mappers>
</configuration>
结果:UserInfo(userId=1, userName=zhangsan, userPassword=123, createTime=Sat Jan 22 12:06:21 CST 2022, updateTime=Sat Jan 22 12:06:23 CST 2022)