两种使用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();

}

posted @ 2017-05-11 15:09  helloromeo  阅读(259)  评论(2)    收藏  举报