mybaits输出helloworld-------mybatis(二)
mybatis输出helloworld创建数据库(临时学习的话,建议使用docker)这里存在一个误区,虽然容器的3306已经映射到主机3306,但是扔不能使用连接命令直接在物理机进行连接,需要使用docker exec -it 容器名 /bin/bash进入容器内部进行连接测试数据库是否能正常连接,编辑完成之后,最好测试一下常见误区:由于使用的是腾讯云服务器,所以腾...
·
mybatis输出helloworld
- 创建数据库(临时学习的话,建议使用docker)
- 这里存在一个误区,虽然容器的3306已经映射到主机3306,但是扔不能使用连接命令直接在物理机进行
连接,需要使用docker exec -it 容器名 /bin/bash 进入容器内部进行连接
- 测试数据库是否能正常连接,编辑完成之后,最好测试一下
- 常见误区:由于使用的是腾讯云服务器,所以腾讯云的安全组中没有编辑3306为开放端口之前,
用户是无法通过3306端口连接数据库的,可以按照下图二进行入栈配置。

- 创建项目
- 这里简单说明一下,mybatis实质上是通过配置文件来构建对象,将数据库中的每一条数据和我们代码中的实体类进项一一对应,从而达到通过操作实体类来对数据库进行操作的目的,可能说法有点问题,但我一直是这么理解的!

4.编写配置文件 configuration.xml,mybaits.properties,BlogMapper.xml,log4j.properties- configuration文件的主要作用是对mybaits的相关规则进项限制,稍后我会继续在下一篇博客细说,
此处大家稍微浏览一下照搬就可以了!
- configuration文件的主要作用是对mybaits的相关规则进项限制,稍后我会继续在下一篇博客细说,
<?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>
<!--通过properties配置将对应配置信息注入到config文件中 -->
<properties resource="source/mybatis.properties"></properties>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="logPrefix" value="[MybatisLogs]" />
<setting name="defaultStatementTimeout" value="1" />
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--在全局配置文件中注册映射文件 -->
<mapper resource="source/BlogMapper.xml"/>
</mappers>
</configuration>
- mybatis.properties配置文件,主要是为了解耦,
将数据库的主要信息单独维护,从而减小configuration文件的同事,
若有多个数据库配置,也方便进行更换。
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://你的服务器IP:3306/mybatis_database?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
- BlogMapper.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="dao.BlogerMapper">
<select id="getBlogerId" resultType="Bloger">
select * from mybatis_test where id = #{id}
</select>
</mapper>
- log4j.properties 主要定义的是各种运行输出信息,调试信息和错误信息,各位可根据实际需要修改到对应的目录
log4j.rootLogger = debug,stdout,D,E
###̧ 输出信息
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 调试信息
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = F://logs/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 错误信息
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =F://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ]
5.编写java文件
- 实体类:Bloger.java,为了方便查看结果,这里我们重写toString
package model;
import org.apache.ibatis.type.Alias;
public class Bloger {
private Integer id;
private String name;
private String username;
private int age;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "BlogId:"+ getId()+ " BlogName:"+getName()+ " UserName:" + getUsername();
}
}
- 编写接口文件 BlogMapper.java
package dao;
import model.Bloger;
public interface BlogerMapper {
//通过接口方法 getBlogerId(Integer id)返回一个实体对象
public Bloger getBlogerId(Integer id);
}
- 编写测试文件 MybatisDriver.java

package test;
import dao.BlogerMapper;
import model.Bloger;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
/**
* auth:wujianqinjian
* mybatis流程:
* 1 创建全局配置文件 configuration.xml
* 2 创建 sql 映射文件 BlogMapper.xml
* 3 将全局文件中维护 sql映射文件配置
* 4 调用java API 执行相关sql操作
* - 注意sqlSession是线程非安全的
*/
public class MybatisDriver {
public static void main(String[] args) throws Exception{
testProxyObject();
}
//这里建议看下官方文档(上图),对象的作用域需要额外注意一下
public static SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "source/configuration.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
public static void testProxyObject() throws IOException{
// 获取SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
// 获取回话对象
SqlSession sqlSession=sqlSessionFactory.openSession();
// 这里MyBaitis帮我们创建了代理对象
BlogerMapper blogerMapper =sqlSession.getMapper(BlogerMapper.class);
Bloger blogerId=blogerMapper.getBlogerId(1);
System.out.println(blogerId);
sqlSession.close();
}
}
总结:Mybaits其实就是通过各种配置文件,将我们的实体与数据库中的记录进行一一映射,通过在java文件调用Mybatis相关API,从而达到调用映射文件(一般都叫做mapper.xml)中的sql语句,从而避免了我们直接在java代码中插入大量sql语句的问题,解耦的同时,也提升代码的可读性、可扩展性!
最后,建了一个微信群,本来想大家一起共同学习,但学习气氛好像目前还不算特别好,加群主微信进群!
最后,建了一个微信群,本来想大家一起共同学习,但学习气氛好像目前还不算特别好,加群主微信进群!(由于广告太多,所以请先点赞,然后发博客名!)
更多推荐



所有评论(0)