简介: MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普
简介: MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java对象)映射成数据库中的记录。
使用步骤:
1、首先,导入包: 导入mybatis和其三方的jar包,还有 数据库的 驱动包;
2、然后,写mybatis。xml配置文件: @、在类根目录创建mybatis.xml文件,里面的内容是这样子滴:
(里面需要更改的就是,连接的数据库要素,还有最后的sql映射的配置文件,下一点就说明)
<?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>
<!-- 这个是po类的设置 这样不必在sql中写po类的全限定名 -->
<typeAliases>
<typeAlias alias="Photo" type="com.bjsxt.po.Photo"/>
</typeAliases>
<environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/photo" /> <property name="username" value="root" /> <property name="password" value="xiaohang" /> </dataSource> </environment> </environments> <mappers> <!-- sql 映射文件 这个是对应的配置文件 这个配置文件和dao里面的接口类联系 --> <mapper resource="com/smallang/dao/PhotoDao.xml" /> </mappers></configuration>
登录后复制
3、接着,创建dao和对应xml sql映射文件:
@、 创建一个接口,里面就是一个或多个方法:比如像这样:
(这个里面就是各种方法,sql语句是放在映射的xml文件里面的,当然这个参数和返回类型是会面)
public interface PhotoDao { public void savePhoto(Photo photo); public Photo getPhotoById(int id); public Photo findPhotoByName(String name,int uid); // public Photo findPhotoByName2(Map<String, Object> v); public Photo findPhotoByName2(Photo photo); public List<Photo> findPhotos();}
登录后复制
@、 创建于类名相同的xml,像这样PhotoDao.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="com.bjsxt.dao.PhotoDao"> <!-- Id :dao中的方法名字 parameterType:方法中传参的类型 --> <insert id="savePhoto" parameterType="Photo"> <!-- name 代表方法中第一个参数的name属性值 --> insert into t_photo (name,uploadDate) values (#{name},#{uploadDate}) </insert> <!-- java中基本数据类型和string 都不需指定类型 parameterType="int" 不要--> <select id="getPhotoById" resultType="Photo"> <!-- dsfsfs 代表方法中第一个参数的值 --> select * from t_photo where id=#{dsfsfs} </select> <!-- #{和方法中参数的名字无关} {表示第n个参数的值或者其属性的值,或者其key的值}--> <select id="findPhotoByName" resultType="Photo"> <!-- {}可以使用下标表示n --> select * from t_photo where name=#{0} and uid=#{1} </select> <select id="findPhotoByName2" resultType="Photo"> <!-- {}: map中的key --> select * from t_photo where name=#{name} and uid=#{uid} </select> <!-- resultType表示sql语句执行之后返回的数据类型 --> <select id="findPhotos" resultType="Photo"> select * from t_photo </select></mapper>
登录后复制
(解释上面的东东: 绿色:id= 对应的方法名;
蓝色:parameterType 参数的类型 特殊类必学写
黄色:sql 的 语句 (里面的#{参数类属性名} 或 #{0,1.。。}下标 来使用参数的数据)
粉色:resultType = 返回类型 )
然后这里有一个多表查询,返回list