✨✨博主简介:一个会bbox的
✨✨个人主页:沫洺的主页
系列专栏: JavaWeb专栏 JavaSE专栏 Java基础专栏vue3专栏
如果文章对你有所帮助请留下三连✨✨
MyBatis: API帮助文档
maven Web项目
org.mybatis mybatis 3.5.9 mysql mysql-connector-java 8.0.28 org.projectlombok lombok 1.16.10 cn.hutool hutool-all 5.8.5 log4j log4j 1.2.17
在resources下创建db.properties文件
db.properties
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql:///db5?useSSL=false&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf8 username=root password=123456
在resources下创建MyBatis的配置文件,无固定名,但大部分人使用 resources/mybatis.xml
mybatis.xml
Entity层是实体层,也就是所谓的model,也称为pojo层,是数据库在项目中的类,该文件包含实体类的属性和对应属性的set、get方法; DAO层=mapper层,现在用Mybatis逆向工程生成的mapper层,其实就是dao层。 DAO层会调用entity层,DAO中会定义实际使用到的方法,比如增删改查。
创建entity/User
package com.moming.entity; import lombok.Data; @Data public class User { private Integer id; private String userName; private Integer userAge; }
注意在数据库中的字段名和实体类中的属性名不一致,所以在配置文件中需要使用resultMap进行映射
在resources下创建mapper/user.xml
在启动类App中,从xml中创建SqlSessionFactory,获取sqlSession对象执行sql
App
package com.moming; import com.moming.entity.User; 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; import java.util.List; public class App { public static void main(String[] args) throws IOException { // 1. 解析扫码 mybatis.xml 文件 InputStream inputStream = Resources.getResourceAsStream("mybatis.xml"); // 2. 获取sqlsession工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 3. 获得 sqlsession 对象 SqlSession sqlSession = sqlSessionFactory.openSession(); // 4. 执行sql语句 List
users = sqlSession.selectList("com.moming.selectAll"); // 打印结果 System.out.println(users); } } 执行结果
加入依赖
log4j log4j 1.2.17 配置文件 log4j.properties
#定义全局日志级别调试阶段推荐debug log4j.rootLogger = error,stdout #包级别日志 log4j.logger.com.moming = debug ### 输出信息到控制抬 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.SimpleLayout ### 输出日志到文件=/logs/log.log ### log4j.appender.logfile = org.apache.log4j.DailyRollingFileAppender log4j.appender.logfile.File = /logs/log.log log4j.appender.logfile.layout = org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
再次运行看效果
JDBC : 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
MANAGED : 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期。
UNPOOLED : 这个数据源的实现会每次请求时打开和关闭连接.
POOLED : 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
JNDI : 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。
resource: 使用相对于类路径的资源引用
url: 使用完全限定资源定位符(URL)
class : 使用映射器接口实现类的完全限定类名
name : 将包内的映射器接口实现全部注册为映射器
常见的 Java 类型内建的类型别名。它们都是不区分大小写的
- 一般基本类型别名在原名前加_(例如_int)
- 对象类型,工具类的别名是原名字母全部小写
配置db.properties数据库信息
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql:///db5?useSSL=false&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf8 username=root password=123456
mybatis引入