01-mybatis 快速入门
程序员文章站
2022-03-05 23:24:13
...
01-mybatis 快速入门
1. 快速入门程序
-
导入jar
添加 mysql的驱动包
添加mybatis的jar
-
创建项目配置文件
<?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"> <!--引入config.xml的约束--> <configuration> <!-- 配置环境--> <environments default="development"> <environment id="development"> <!-- 事务--> <transactionManager type="JDBC"/> <!-- 连接MySQL的 4要素--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 配置mapper的映射--> <mappers> </mappers> </configuration>
-
创建获取SqlSession的工具类型
package cn.hk.utils; 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.Reader; import java.util.Objects; /** * @author 黄药师 * @date 2020-05-11 09:33 * @desc sqlSession工具类 * * */ public class SqlSessionUtils { private static SqlSessionFactory factory = null; /** * 从 XML 中构建 SqlSessionFactory * 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。 * SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。 * 而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 * SqlSessionFactory 实例。 */ static { // io流 读取 config配置文件 Reader reader = null; try { reader = Resources.getResourceAsReader("mybatis-config.xml"); } catch (IOException e) { e.printStackTrace(); } //通过 factoryBuilder 拿到 sqlSessionFactory 对象 factory = new SqlSessionFactoryBuilder().build(reader); } /** * 获取sqlSession * 从 SqlSessionFactory 中获取 SqlSession * SqlSession 提供了在数据库执行 SQL 命令所需的所有方法 * @return */ public static SqlSession getSqlSession(){ return factory.openSession(); } /** * 关闭连接 * @param session * @return */ public static void close(SqlSession session){ if (Objects.nonNull(session)) { // 判null 处理 session.close(); } } }
-
创建一个映射接口 (需求查询一条数据)
public interface UserMapper { /** * 通过 id查询 user * @param id * @return */ User selectByPrimaryKey(Integer id); }
-
创建一个映射文件
<?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.xml 的约束 --> <!-- namespace: 命名空间的作用有两个, 1. 利用更长的全限定名来将不同的语句隔离开来 2. 实现了和mapper接口绑定 命名解析: 1. 全限定名(比如 "com.mypackage.MyMapper.selectAllThings")将被直接用于查找及使用。 2. 短名称 如果全局唯一也可以作为一个单独的引用。 如果不唯一,有两个或两个以上的相同名称(比如 "com.foo.selectAllThings" 和 "com.bar.selectAllThings"), 那么使用时就会产生"短名称不唯一"的错误,这种情况下就必须使用全限定名。 --> <mapper namespace="cn.hk.mapper.UserMapper"> <!-- select 映射查询语句。 id 短名称 唯一的 parameterType sql输入的参数 类型 resultType sql执行后 输出的 结果类型 #{id} ONGL语法 获取传入的id值 --> <select id="selectByPrimaryKey" parameterType="integer" resultType="cn.hk.bean.User"> select * from t_user where id = #{id} </select> </mapper>
-
在config.xml配置文件中注册映射文件
<!-- 配置mapper的映射--> <mappers> <mapper resource="cn/hk/mapper/UserMapper.xml"></mapper> </mappers>
-
编写测试代码
@Test public void testSelectOne(){ // 获取SqlSession SqlSession sqlSession = SqlSessionUtils.getSqlSession(); // 通过session获取Mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 传入参数返回值 User user = mapper.selectByPrimaryKey(2); System.out.println(user); }
2.mybatis配置日志
-
日志
Mybatis 通过使用内置的日志工厂提供日志功能。内置日志工厂将会把日志工作委托给下面的实现之一:
- SLF4J
- Apache Commons Logging
- Log4j 2
- Log4j
- JDK logging
MyBatis 内置日志工厂会基于运行时检测信息选择日志委托实现。它会(按上面罗列的顺序)使用第一个查找到的实现。当没有找到这些实现时,将会禁用日志功能。
-
可以通过在 MyBatis 配置文件 mybatis-config.xml 里面添加一项 setting 来选择其它日志实现。
<configuration> <settings> ... <setting name="logImpl" value="LOG4J"/> ... </settings> </configuration>
-
日志的配置
配置日志功能非常简单:添加一个或多个配置文件(如 log4j.properties),有时还需要添加 jar 包(如 log4j.jar)。下面的例子将使用 Log4J 来配置完整的日志服务。一共两个步骤:
-
添加 Log4J 的 jar 包
-
在应用的类路径中创建一个名为
log4j.properties
的文件,文件的具体内容如下:# Global logging configuration log4j.rootLogger=ERROR, stdout # MyBatis logging configuration... # 需要那个包下面的 日志打印 # 日志级别 warn 警告级别 info 普通信息级别 debug 调试模式(开发阶段) error 错误(项目上线) all、trace(打开所有日志) log4j.logger.cn.hk.mapper=TRACE # 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
-
配置了日志 后测试控制台的输出结果:
DEBUG [main] - ==> Preparing: select * from t_user where id = ? DEBUG [main] - ==> Parameters: 2(Integer) TRACE [main] - <== Columns: id, name, pwd, phone TRACE [main] - <== Row: 2, 李四, 123456, 1234568888 DEBUG [main] - <== Total: 1 User{id=2, name='李四', pwd='123456', phone='1234568888'}
-
上一篇: php怎么接收url参数
下一篇: Qt Quick快速入门01