ld199848
这次学习的只有Mybatis,首先看一下文件结构,开发工具Eclipse。
根据图片可以看到,lib导包很简单,主要的是第二个Mybatis必备包和第三个Mysql数据库必备,第一个log4j笔记包自行百度。
 
mysql包,要用下载吧!
 

mysql-connector-java-5.0.8-bi

n.jar

528.17KB
mybatis包,要用下载吧!
 

mybatis-3.2.

2.jar

683.42KB
log4j包,要用下载吧!
 

log4j-1.2.1

7.jar

478.4KB
接下来看配置文件,mybatis的配置文件是mybatis-congfig。
 
贴个代码和文件吧!
<?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>
<!-- 引入jdbc.properties文件 -->
<properties resource="jdbc.properties"/>
<settings>
<!-- 配置mybatis的log实现为LOG4J -->
<setting name="logImpl" value="LOG4J"/>
<!-- 说动设置resultMap自动映射的匹配级别
1、NONO禁止自动匹配
2、PARTIAL自动匹配所有属性,有内部嵌套assciation和collection除外
3、FULL自动匹配所有
-->
<setting name="autoMappingBehavior" value="FULL"/>
</settings>
<environments default="develope">
<environment id="develope">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="StudentDao.xml"/>
</mappers>
</configuration>
 

mybatis-confi

g.xml

1.14KB
配置文件就是这个样子,可以自己下载一个瞅一下。里面引用了jdbc.properties。也就是jdbc连接数据库的一些配置。下面放出来可以看一下。
 
贴个代码和文件吧!
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://127.0.0.1\:3306/mybatis?userUnicode\=true&characterEncoding\=utf8
username=root
password=654321
 

jdb

c.properties

146B
这个就是jdbc.properties,里面有数据库名和数据库连接的用户名和密码。看个人情况修改和添加必要的元素。
 
还有就是log4j,这个无伤大雅,直接文件吧!
 

log4

j.properties

433B
配置文件什么的就是这么个鬼样子了。接下来是就是数据库操作。简称添删改查。
 
首先是实体类Student.java:
元素自己看着办。下面的就是get,set方法了。直接弄吧!shift+alt+s+r。
 
接下来是Dao层需要干什么StudentDao.java:
说一下比较特殊的。
1:模拟修改密码中注释@Param用于在多个参数时使用。也就是说单个参数可以省略。需要注意的是@Param("这里括号里面的取名关系到后面SQL语句的写法")String 这里取名就较为随意。
2:外键一对一查询中有一个List<Class>,这里的Class对应的是一个实体类,当然这样的取名是有问题的,但是当时随意一打,而且没有报错。就这样过去了。贴个Class类的图。
3:SQL动态查询****,这一类的是sql动态查询的,具体看了SQL语句就清楚了,后面会贴出来。
4:SQL动态查询之froeach标签参数类型POJO这里的POJO也是个实体类。贴个图,具体作用后面看代码。
 
最后来看看一个个数据库操作是怎么实现的。
 
首先来看StudentDao.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">
 
<mapper namespace="dao.StudentDao">
最上面的出不清道不明直接写吧!mapper里面的namespace等于是你的Dao层的路径。
</mapper>
 
再来看看测试类里面的一个必备的,加载主配置文件。
@Before
public void bef(){
//加载主配置文件
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
sqlsession = factory.openSession(true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
再来个图吧!
 
接下来看看SQL语句和测试类。
 
普通查询1
上面这个是查询,所以标签是select,里面的id对应的是Dao层的方法名select。放个图。
还有一个parameterType对应的是传进来的参数是一个什么类型的。我这里是int。也就是说传进来的参数是一个int类型的数据。当然resultType还可以对应别的,比如Integer,string或者是存储了数据的实体类。贴个图。
最后还有一个resultType对应的是查出来后是一个什么样的数据。我这里是entity.Student,也就是说我查出来后会是一个实体类的形式。当然resultType还可以对应别的,可自行百度,放个图。
 
再接下来上面那个SQL语句的意思应该很简单,但是SQL语句后面这个条件where里面的等于后面的元素必须对应Dao层里面的数据,也就是参数。写法必须是#{ }。
这个就不用多说了,应该看得懂的。直接运行结果。
 
普通查询2
这是另一种查询方式,resultMap查询方式。和上面的区别就是这里查询要申明一下,和hibernate的那个hbm.xml有点相似。里面的数据要和实体类相对应。resultMap里面的type对应的就是实体类的路径。id的话对应的是下面select标签中resultMap元素等于的东西。其它的具体自己参悟。这边查出来的List类型,注意的是select标签中resultMap和resultType只能存在一个。两个可以自己试试。
不多说加一。直接运行结果。
 
模糊查询
没啥说的,和之前的差不多,没什么区别。这边其实是可以用String类型传参进来的,但是一时激动用来实体类。重要的事情说3编,parameterType表示传进来的数据类型,resultType表示传出来的数据类型。。。还有就是SQL语句的模糊查询写法,这个自行百度,不在本文之列。
不多说加二。直接运行结果。
滴!滴!滴!老司机卡
 
添加数据
没啥说的,添加数据的标签是insert而不是select,只有传入数据的parameterType,而没有传出数据的resultType。为什么呢!妈个鸡你添加你还想传出来什么,只要没报错就是添加成功了。开玩笑的,一般成功为1,失败为2.
不多说加三。直接运行结果。
 
更新数据
没啥说的,妈个鸡更新数据不是update还能是啥。同样只有传入数据的parameterType,而没有传出数据的resultType。为什么呢!妈个鸡你修改你还想传出来什么,只要没报错就是修改成功了。开玩笑的,一般成功为1,失败为2.
不多说加四。直接运行结果。
滴!滴!滴!学生卡
 
模拟修改密码
没啥说的,只是传参了两个数据#{name}和#{id}而已
不多说加五。直接运行结果。
滴!滴!滴!老师卡
 
删除数据
没啥说的,妈个鸡删除数据不是delete还能是啥!还有只有传入数据的parameterType,而没有传出数据的resultType。为什么呢!妈个鸡你删除你还想传出来什么,只要没报错就是删除成功了。开玩笑的,一般成功为1,失败为2.
不多说加六。直接运行结果。
 
result映射外键查询
没啥说的。标签association用于关联表查询,上面resultMap对应的是Class类,下面association对应的是Student类。再贴下Class类的图。
还有需要注意的是。。。自己看注释。至于多表查询的SQL语句想要理解请自行百度。这里表示不想说。
不多说加七。直接运行结果。
 
SQL动态查询之if标签
这个是SQL动态的查询,主要是防止多条件出问题。相信能看懂。就是当name不为空的时候把and name = #{name}接到SQL语句中,title不为空把and title like CONCAT('%',#{title},'%')接到SQL语句中。
不多说加八。直接运行结果。
 
SQL动态查询之choose标签
这个和上面那个差不多,用过jstl相信就能看得懂。这里只是把if换成了when
不多说加九。直接运行结果。
滴!滴!滴!猥琐卡
 
SQL动态查询之where标签
结合SQL语句看图片里面的注释,觉得应该能看懂。不多说。
不多说加十。直接运行结果。
滴!滴!滴!色狼卡
 
SQL动态查询之trim标签
结合SQL语句看图片里面的注释,觉得应该能看懂。不多说。
不多说加十。直接运行结果。
滴!滴!滴!龌龊卡
 
SQL动态更新之set标签
结合SQL语句看图片里面的注释,觉得应该能看懂。不多说。就是说修改的时候可以只修改一个,也可以修改多个。
不多说加十。直接运行结果。
滴!滴!滴!紫色卡
 
SQL动态查询之foreach标签
老生常谈,结合SQL语句看图片里面的注释,觉得应该能看懂。不多说。
这里是测试类图片,请观赏。。。
 
以上就是Mybatis的一些测试方法。下面会贴出整个项目,不懂的下载自己看。再不懂可以问我。
注意:
1:xml文件里面,搜索-->select 添加-->insert
更新-->update 删除-->delete
 
2:resultType和resultMap不可共存。
例:<select id="***" resultMap="***">
正确
</select>
例:<select id="***" resultMap="***" resultType="***">
错误
</select>
 
3:添加(insert)和修改(update)是没有resultType或者resultMap
 
4:parameterType表示传入参数的类型,resultType和resultMap表示
传出的参数类型
 
5:parameterType可以为int,String,Integer,Date或者类,resultType
和resultMap也一样。
 
 

Mybati

s.rar

1.52MB
这里是整个项目文件,需要的话自己下载。如有不足,请多指教!

相关文章: