两种使用MyBatis框架的方式
使用mybatis框架有两种方式:①mapper.xml配置文件 ②注解mapper接口
1、核心配置文件 conf.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/mydatabase?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册companyMapper.xml文件,companyMapper.xml位于mapping包下,所以resource写成mapping/userMapper.xml
这是使用第一中方式时在conf.xml文件中需要添加的配置信息,在mapping包下有一个名为companyMapper.xml的配置文件-->
<mapper resource="mapping/companyMapper.xml"/>
<!-- 注册UserMapper映射接口 ,这是使用第二种方式时在conf.xml文件中需要添加的配置信息,在mapping包下有一个名为CarMapper的接口-->
<mapper class="mapping.CarMapper"/>
</mappers>
</configuration>
方式一:使用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的值是唯一的
例如namespace="com.hzp.mappingA.userMapper"就是com.hzp.mappingA(包名)+userMapper(userMapper.xml文件去除后缀)
-->
<mapper namespace="mapping.companyMapper">
<!-- 创建用户(Create) -->
<insert id="addCompany" parameterType="entity.Company">
insert into company(name,address,regist_date) values(#{name},#{address},#{registDate})
</insert>
<!-- 删除用户(Remove) -->
<delete id="deleteCompany" parameterType="int">
delete from company where id=#{id}
</delete>
<!-- 修改用户(Update) -->
<update id="updateCompany" parameterType="entity.Company" >
update card set company=#{name} where id=#{id}
</update>
<!-- 查询全部用户-->
<select id="getAllCompanies" resultType="entity.Company">
select * from company
</select>
</mapper>
②代码部分
public static void main(String[] args) {
//加载配置文件
String source = "conf.xml";
InputStream in = Test1.class.getClassLoader().getResourceAsStream(source);
//创建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//打开session
SqlSession session = factory.openSession();
String statement = "mapping.companyMapper.addCompany";
Company com = new Company();
com.setAddress("中文乱码的情况2:连接数据库的url所对应的characterEncoding问题");
com.setName("中文乱码的情况1:数据库编码集问题");
com.setRegistDate(new Date());
//插入数据
session.insert(statement,com);
//提交事务
session.commit();
//关闭session
session.close();
}
方式二:使用注解 Mapper接口
1.编写接口
public interface CarMapper {
@Insert("insert into car(color,cost) values(#{color},#{cost})")
public boolean saveCar(Car car);
@Delete("delete from car where id=#{id}")
public int delete(Car car);
@Update("update car set color=#{color}, cost=#{cost} where id=#{id}")
public int update(Car car);
@Select("select * from car")
public List<Car> findAll();
}
2.使用接口
public static void main(String[] args) {
// TODO Auto-generated method stub
//加载配置文件
String source = "conf.xml";
InputStream in = ByInteface.class.getClassLoader().getResourceAsStream(source);
//创建sessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//开启Session
SqlSession session = factory.openSession();
Car car = new Car();
car.setCost(10000000);
car.setColor("Blue");
//通过session 获取相应的mapper对象
CarMapper mapper = session.getMapper(CarMapper.class);
// 执行mapper对象的方法
mapper.saveCar(car);
//提交事务、关闭session释放资源
session.commit();
session.close();
}

浙公网安备 33010602011771号