Mybatis
大家伙,今天是走着走着突然下雨,并且被淋湿的老椴 ╯﹏╰
今天学习了java的重要框架之一:MyBatis,做个总结
Let's do it !
MyBatis 是一款优秀的持久层框架,它支持定制化SQL,存储过程以及高级映射.
MyBatis 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和java的POJO(普通对象)映射成数据库中的记录.
使用:
.1.导入对应的jar包(Maven项目必备功课,就像恰饭要拿筷子一样,是的,中华的筷子是最厉害的ˋ︿ˊ )
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
.2.编写MyBatis的配置XML文件(别忘了,XML独到的就是XML或者注解)
<?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> <!-- 配置myabtis的默认数据源--> <environments default="devlopment"> <!-- 数据源--> <environment id="devlopment"> <!--事务管理 --> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"></property> <property name="username" value="root"></property> <property name="password" value="59852369"></property> </dataSource> </environment> </environments> <mappers> <!-- 使用资源的绝对路径 <mapper url=""/> --> <mapper resource="User.xml"></mapper> <!-- Mapper接口的全类名 要求:Mapper接口的名称与映射文件名称一致 必须在同一个目录下 <mapper class="com.qf.mapper.UserMapper"/> --> <!-- 加载某个包下的映射文件 (推荐) 要求:Mapper接口的名称与映射文件名称一致 必须在同一个目录下 <package name="com.qf.mapper"/> --> </mappers> </configuration>
.注意:如果使用name方式以及class的方式加载mapper必须在同一个包下以及在pom.xml中加入,编译时编译所有位置的xml文件(你看,优化了不是)
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<!--默认是true-->
<!--<filtering>true</filtering>-->
</resource>
</resources>
</build>
.3.我们编写sql的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" > <!--源生api的方式 --> <mapper namespace=""> </mapper>
接下来就是操作数据库的两种方式(由此说明数据库多重要啊,sql多重要啊,要好好学啊,宝贝)
.1通过MyBatis提供的原生api
sql文件的编写
<?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="test"> <select id="selectById" parameterType="java.lang.Integer" resultType="com.qf.domain.User"> select * from user where id = #{id} </insert> </mapper>
使用junit调用(好东西啊,不用写main了)
@Test public void testMyBatis01() throws IOException { /** * 1.首先我们要加载我们的mybatis配置文件 */ InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); //使用sqlSessionFactoryBuild来创建一个sqlSessionFactory SqlSessionFactory sqFactroy = new SqlSessionFactoryBuilder().build(resourceAsStream); //获取到sqlsession 进行调取api SqlSession sqlSession = sqFactroy.openSession(); //调取源生api //通过id来进行查询 User user = sqlSession.selectOne("test.selectById", 37); System.out.println(user); }
.2.通过接口的方式(这个才是王道!!!!!)
创建个接口,接口内的方法名跟我们的mapper.xml中的id要相同(这个很重要,匹配啊,不然咋知道是梦中魂牵梦绕的你)
public interface UserMapper { User selectById2(int id); }
mapper.xml中的namespace使我们接口的全限定类名
<mapper namespace="com.qf.mapper.UserMapper">
<select id="selectById2" parameterType="java.lang.Integer" resultType="com.qf.domain.User">
select * from user where id = #{id}
</select>
</mapper>
.3.配置我们的MyBatis的核心配置文件
<mappers>
<package name="com.qf.mapper"></package>
</mappers>
.4.通过sqlsession.getMapper来获取我们的接口
通过接口调用方法获取返回值并且输出
@Test public void testMyBatis02() throws IOException { /** * 1.首先我们要加载我们的mybatis配置文件 */ InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); //使用sqlSessionFactoryBuild来创建一个sqlSessionFactory SqlSessionFactory sqFactroy = new SqlSessionFactoryBuilder().build(resourceAsStream); //获取到sqlsession 进行调取api SqlSession sqlSession = sqFactroy.openSession(); //调取对应的接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user1 = mapper.selectById2(38); System.out.println(user1); }
.5.该标签配置到MyBatis的核心配置文件中.作用给我们的类起别名,在我们的mapper.xml中不用写全限定类名
<typeAliases>
<typeAlias type="com.qf.domain.User" alias="user"></typeAlias>
</typeAliases>
好了,又到了大家喜闻乐见的告别时间了
在这还是有两点忠告给大家的
(老椴讲的大道理都是很准确的,嗯,就是这样子的 ∩▂∩)
1.不要淋雨,会脑壳疼
2.笔记本电脑键盘敲打真的没有台式的爽啊,难受....

浙公网安备 33010602011771号