mybatis 是一个支持普通SQL查询,存储过程和高级映射(ORM)的持久层框架。
它封装了几乎所有的JDBC代码和参数的手工设置。
Java中的实体bean; SQL定义文件 mapper.xml主要用来定义SQL语句的
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="com.xdl.dao.XdlBankAccountDAO"> <!-- 定义SQL语句 --> <select id="findById" parameterType="int" resultType="com.xdl.bean.XdlBankAccount"> select * from xdl_bank_account_23 where id = #{n} </select> <!-- 定义一个多参 sql 的查询语句 --> <select id="findAccountByAccNoAndPassword3" resultType="com.xdl.bean.XdlBankAccount" > select * from xdl_bank_account_23 where acc_no = #{0} and acc_password = #{1} </select> <!-- 根据id 更新密码 --> <update id="updatePasswordById" parameterType="com.xdl.bean.XdlBankAccount" > update xdl_bank_account_23 set acc_password = #{acc_password} where id = #{id} </update> </mapper>mybatis 的主配置文件sqlmap-config.xml 定义链接数据库信息和加载SQL定义文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"> <configuration> <environments default="environment"> <environment id="environment"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/> <property name="username" value="system" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/xdl/mapper/XdlBankAccountMapper.xml" /> </mappers> </configuration>mybatis 的API 通过SqlSession体现,可封装成工具类调用,如下:
public class SqlSessionUtil { private static SqlSessionFactory ssf = null; static { // 构建一个SqlSession工厂的构建器 SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); // 得到 SqlSession 工厂 需要关联 src下主配置文件对应的流 InputStream inputStream = User.class.getClassLoader().getResourceAsStream("sqlmap-config.xml"); ssf = ssfb.build(inputStream); } public static SqlSession getSqlSession(){ return ssf.openSession(); } class user{} }就是可以 根据接口 自动生成实现类 ,但须注意以下点:
sql 定义文件的id作为接口的方法名,parameterType的值 作为方法的参数类型 resultType的值 作为方法的返回值类型,如果返回多个值 用List<resultType类型>, 如果是增删改,可以使用int或者void.如果是增删改,可以使用int或者void.Sql 定义文件中的namespace 必须是“包名 . 接口名 ”当返回值类型是一个值是用selectOne()方法,多个值时用selectList()方法
但设计多个参数时 parameterType 可不写,参数位置可直接写 #{0 } #{1 } 或者#{parame1} #{parame2} 或者使用注解@param(“参数名”)