典型的b2b网站有哪些北京百度seo排名
Mybatis概述
Mybatis是一个半自动化的框架,需要自己写sql语句,对比JDBC其有耦合性更低的SQL语句与Java代码,各司其职不相互冗杂,对比Hibernate与JPA其又有更灵活的SQL编写能力。
环境搭建
引入相关依赖并打jar包
<dependencies><!-- Mybatis核心 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!-- junit测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- MySQL驱动 --><!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.32</version></dependency></dependencies>
在resource下新建mybatis-config.xml文件,并粘贴以下配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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="123456"/></dataSource></environment></environments><!--引入映射文件--><mappers><mapper resource="mappers/UserMapper.xml"/></mappers>
</configuration>
在mapper文件夹下创建UserMapper接口,每张表对应一个Mapper接口
在resource下创建xml配置文件
在mapper标签下进行sql语句的编写
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qinghe.mybatis.mapper.UserMapper"></mapper>
例如一个insert语句:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--注意这个地方的namespace要与自己的mapper接口保持一致-->
<mapper namespace="com.qinghe.mybatis.mapper.UserMapper"><!-- 注意此处的id作用是唯一标识sql语句,id名必须与mapper接口中的方法名一致--><insert id="insertUser">insert into t_user values(null, 'admin', '123456', 23, 'm', '123456@qq.com')</insert></mapper>
一个插入语句的示例
创建一个mapper层的接口
public interface UserMapper {/*** 添加用户信息* @return*/int insertUser();
}
在test中的测试如下:
public class MyBatisTest {@Testpublic void testMyBatis() throws IOException {//加载配置文件InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//获取SqlSessionFactoryBuilder,工厂模式SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//获取sqlSessionFactory,传入配置文件的流信息SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);//获取sqlSession,sqlSession是数据库与Java进行数据交换的中介,就像是HttpSession时浏览器与Java的中介一样//openSession中的参数true为自动提交的意思SqlSession sqlSession = sqlSessionFactory.openSession(true);//获取mapper接口对象,getMapper(CLass<T>)方法使用代理模式,在底层创建了一个UserMapper对象并赋值给mapperUserMapper mapper = sqlSession.getMapper(UserMapper.class);//调用方法int result = mapper.insertUser();//提交事务,语句必须执行过事务提交之后才会在数据库显示//要么在sqlSessionFactory创建对象时开启自动提交,要么就手动提交
// sqlSession.commit();System.out.println("result:" + result);}
}
添加日志功能
在resource文件夹下创建日志的配置文件:log4j.xml并添加如下配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="UTF-8" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" /></layout></appender><logger name="java.sql"><level value="debug" /></logger><logger name="org.apache.ibatis"><level value="info" /></logger><root><level value="debug" /><appender-ref ref="STDOUT" /></root>
</log4j:configuration>
Mybatis-config.xml配置文件详解
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 配置jdbc.properties文件,使数据库的连接属性们从jdbc.properties读取--><properties resource="jdbc.properties" />
<!-- typeAliases是设置别名的意思,其将全类名设置别名为最后的类名--><typeAliases>
<!-- type属性是要设置别名的类,alias属性是设置的类名alias属性可以不进行设置,若不进行设置则其默认的别名就是类名,且不区分大小写,若设置了alias就区分大小写了,严格按照设置的alias属性进行匹配
--><typeAlias type="com.qinghe.mybatis.pojo.User" alias="User"></typeAlias>
<!-- 也可以以包为单位,将包中的所有类都设置为默认的类名的别名(不区分大小写)--><package name="com.qinghe.mybatis.pojo"></package></typeAliases><!--设置连接数据库的环境--><environments default="development"><environment id="development">
<!--transactionManager标签JDBC表示使用原生的JDBC事务管理方式,例如commit和rollbackMANAGED表示被管理的事务管理方式,例如被Spring管理等
--><transactionManager type="JDBC"/>
<!--设置数据源POOLED表示使用数据库连接池缓存进行连接UNPOLLED表示不使用数据库连接池JNDI表示使用上下文中的数据源
--><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="mappers/UserMapper.xml"/>--><!-- 使用package标签可以做到引入一个包下的所有映射文件的效果-->
<!--***************************注意mapper接口所在的包的包名必须也映射配置文件所在的包名一致mapper接口的名字也必须与xml文件的名字保持一致*****************************
--><package name="com.qinghe.mybatis.mapper"></package></mappers>
</configuration>