Mybatis学习第二天
文章目录
一、Mybatis是什么?
Mybatis:是持久层框架、支持自定义SQL、免除设置参数和获取结果集的操作
二、搭建第一个Mybatis工程
1.创建java Maven项目
2.导入pom.xml坐标
代码如下(示例):
<dependencies>
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--msyql的驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!--日志:记录应用程序所有的执行过程-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
3.创建Mybatis核心配置文件(mybatis-config.xml)
代码如下(示例):
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfiguration
PUBLIC"-//mybatis.org//DTDConfig3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<environmentsdefault="development">
<environmentid="development">
<transactionManagertype="JDBC"></transactionManager><!--事务管理类型:JDBC、MANAGED-->
<dataSourcetype="POOLED"><!--数据源类型:POOLED、UNPOOLED、JNDI-->
<propertyname="driver"value="com.mysql.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
<propertyname="username"value="root"/>
<propertyname="password"value="root"/>
</dataSource>
</environment>
</environments>
4.创建实体类和数据表(尽可能保持一致)
5.创建实体类映射文件
- 在 UserMapper.xml中配置:(头部+对映的数据库映射文件)
```java
<?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="com.zx.dao.UserDao">
<insert id="add" parameterType="com.zx.entity.User">
insert into t_user values (null,#{username},#{password})
</insert>
<delete id="delete" parameterType="int">
delete from t_user where id=#{id}
</delete>
<select id="findAll" resultType="com.zx.entity.User">
select * from t_user
</select>
<update id="update" parameterType="com.zx.entity.User">
update t_user set username=#{username},password=#{password} where id=#{id}
</update>
<select id="selectOne" parameterType="int" resultType="com.zx.entity.User">
select * from t_user where id=#{id}
</select>
<select id="query" parameterType="java.lang.String" resultType="com.zx.entity.User">
select * from t_user where username like "%"#{name}"%"
</select>
<select id="login" parameterType="com.zx.entity.User" resultType="com.zx.entity.User">
select * from t_user where username=#{username} and password=#{password}
</select>
</mapper>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210707215806876.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0Mjk4NzQx,size_16,color_FFFFFF,t_70)
在这里 mapper 有一个属性位namespace这个代表的就是你的dao层接口的全路径位置。
而下面的标签有一个id属性,这id属性对应的值则是你的接口所写的那个方法!一定要对应,这样才能通过这里找到你的dao层
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210707220127647.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0Mjk4NzQx,size_16,color_FFFFFF,t_70)
2. 在mybatis-config.xml中配置
``` **resoureces---->这个代表你的Resouces下Mapper所在的全路径,切记!是用 / ,而不是用 .**
这样就能在mybatis-config.xml中找到你的mapper.xml其中的sql语句啦。
*a) Namespace:命名空间 必须XXXDao的全限定类名
b) 标签中的增删改查的id必须是XXXDao中的方法名称
c) parameterType表明方法中的参数类型
d)书写sql语句过程中,需要用#{参数}替换*
6.测试
- 首先读取配置文件
- sqlSessionFactory
3.最后写个sqlSession.commit();否则执行成功不往数据库写,如果写了没有的话,再加sqlSession.close()
三、配置log4j:【一共需要修改三个地方】
1.作用:
打印执行相关信息。比如数据库执行语句什么的
2.需要配置如下内容:
- 在resources下创建一个文件,名为log4j.properties,内容如下:
#SetrootcategoryprioritytoINFOanditsonlyappendertoCONSOLE.
#log4j.rootCategory=INFO,CONSOLEdebuginfowarnerrorfatal
log4j.rootCategory=debug,CONSOLE,LOGFILE
#SettheenterpriseloggercategorytoFATALanditsonlyappendertoCONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE
#CONSOLEissettobeaConsoleAppenderusingaPatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601}%-6r[%15.15t]%-5p%30.30c%x-%m\n
#LOGFILEissettobeaFileappenderusingaPatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601}%-6r[%15.15t]%-5p%30.30c%x-%m\n
- 在mybatis.xml中的configuration配置内容加上:
<settings>
<!--打印查询语句-->
<settingname="logImpl"value="STDOUT_LOGGING"/>
</settings>
- 在pom.xml中添加内容
<!--日志:记录应用程序所有的执行过程-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
四、原理