您的位置:首页 > 其它

mybatis使用 原始dao开发 (自己写dao实现类)

2017-09-07 00:00 351 查看
先配置sqlMapConfig.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>

<!-- 加载配置文件 -->
<properties resource="db.properties"></properties>

<!-- 开启二级缓存 -->
<settings>
<setting value="true" name="cacheEnabled"/>
</settings>
<!-- 对事务的管理和连接池的配置 -->
<!-- 和spring 整合后environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事物管理,事物控制由mybatis管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.uername}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>

<!-- 在sqlmapconfig.xml中加载映射文件 -->
<mappers>
<mapper resource="sqlMap/User.xml"/>
<mapper resource="sqlMap/UserMapper.xml"/>
<mapper resource="com/shi/mapper/OrderMapper.xml"/>
</mappers>

</configuration>

user.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">
<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用-->
<mapper namespace="test">
<!-- 在映射文件中配置很多sql语句 -->
<!-- 需通过id查询用户 -->
<!-- 通过select执行查询
id:表示映射文件中的sql
讲sql语句封装到mapedStatement对象中,所以将id称为statement的id
parameterType:指定输入参数的类型,这里指定int型
#{} :表示一个占位符
#{id} :  其中的id表示接受输入的参数,参数名称就是id,如果输入的参数是简单类型,
#{}中的参数名可以任意,可以value或者其他名称
resultType :指定sql输出的所映射的java对象类型,select指定resultType表示
将单条记录映射成的java对象
-->
<select id="findUserById" parameterType="int" resultType="com.shi.POJO.User">
SELECT * FROM USER WHERE id=#{value}
</select>

<!-- 根据用户名称模糊查询用户,可能返回多条记录,
resultType :指定的就是单条记录所映射的java对象类型
%{}表示拼接sql串,将接受的参数类容不加修饰的拼接在sql中
问题:使用${}拼接sql,引起sql注入 不安全
${value} :接受参数的类容,如果传入的参数是简单类型,${}中只能使用value
-->
<select id="findUserByName" parameterType="java.lang.String" resultType="com.shi.POJO.User">
SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>

<!-- 删除用户 -->
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>

<!-- 跟新用户 -->
<update id="updateUser" parameterType="com.shi.POJO.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}  where id=#{id}
</update>

</mapper>

第一个dao实现类 的查询用户的方法

@Test
public void findByIdTest() throws IOException {
//获取mybatis配置文件
String resource="SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream=Resources.getResourceAsStream(resource);
//InputStream inputStream=Resources.getUrlAsStream("");
System.out.println(inputStream);
//创建会话工厂,传入mybatis配置文件信息
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

//通过工厂得到sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();

//通过sqlSession操作数据库
//第一个参数:映射文件中的statement的id。等于=namespace+"."+statement的id
//第二个参数:指定和映射文件中所匹配的parameterType类型的参数
//sqlSession.selectOne(statement,type);返回的结果是和映射文件中匹配的resultType类型的对象
User user=sqlSession.selectOne("test.findUserById", 1);

//System.out.println("用户名是  : "+user.getUsername());
System.out.println(user);
//释放资源
sqlSession.close();
}

原始dao开发过程中的问题

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatiis