mybatis使用:
1.导入mybatis的jar和mysql的jar
2.编写实体类
3.配置mapper
1)配置mapper的xml文件
2)书写mapper的interface
4.配置config.xml并引入mapper信息。
配置mapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 -->
<mapper namespace="com.dgut.entity.mapping.carMapper">
<select id="getCar" parameterType="int" resultType="com.dgut.entity.Car">
select * from car where id=#{id}
</select>
<select id="getCars" resultType="com.dgut.entity.Car">
select * from car
</select>
<insert id="addCar" parameterType="com.dgut.entity.Car">
insert into car(name) values(#{name})
</insert>
<delete id="deleteCar" parameterType="int">
delete from car where id=#{id}
</delete>
<update id="updateCar" parameterType="com.dgut.entity.Car">
update car set name=#{name} where id=#{id}
</update>
</mapper>
config相应的配置:
<?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>
<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:3306/cargo" />
<property name="username" value="root" />
<property name="password" value="zzw123" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册userMapper.xml文件,
userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
<mapper resource="com/dgut/entity/mapping/carMapper.xml"/>
</mappers>
</configuration>
使用接口注解的mapper方式如下:
package com.dgut.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.dgut.entity.Car;
public interface CarMapper {
@Insert("insert into car(name) values(#{name})")
public int add(Car car);
@Select("select * from car where id=#{id}")
public Car getCar(int id);
@Select("select * from car")
public List<Car> getCarList();
@Update("update car set name=#{name} where id=#{id}")
public void update(Car car);
@Delete("delete from car where id=#{id}")
public void delete(int id);
}
相应的config.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>
<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:3306/cargo" />
<property name="username" value="root" />
<property name="password" value="zzw123" />
</dataSource>
</environment>
</environments>
<!-- interface配置 -->
<mappers>
<mapper class="com.dgut.mapper.CarMapper"></mapper>
</mappers>
</configuration>
mybatis使用过程:
1.读取config文件;
2.创建SQLSeesionFactory工厂
3.创建sqlsession方法
4.执行数据库操作
5.关闭sqlsession。
代码示例:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
//mybatis的配置文件
String resource="config.xml";
//使用类加载器加载mybatis的配置文件
InputStream in=Test.class.getClassLoader().getResourceAsStream(resource);
//创建SQLSession 工厂
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(in);
/*
* sessionFactory的创建还有如下方法:
使用mybatis内置的reader读取:
Reader reader=Resources.getResourceAsReader(resource);
SqlSessionFatory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
*/
//创建事务session
SqlSession session=sessionFactory.openSession();
//sql的标识
String statement="com.dgut.entity.mapping.carMapper.getCar";
Car car=session.selectOne(statement, 1);
System.out.println(car);
}
}
mybatis优化:
将数据库信息封装到properties文件,config文件在configuration中引入:
<properties resource="db.properties"/>
实体类的优化:
在environment前加入:
1)单个别名:
<typeAliases>
<typeAlias type="com.dgut.entity.Car" alias="Car"> </typeAlias>
</typeAliases>
2)批量别名:
<typeAliases>
<package name="com.dgut.entity"></package>
</typeAliases>