只是指我学习的视频中,老师编写代码的顺序
顺序是:编写实体entity,编写service,里面是一些方法的名称,没有实现的代码。然后将service里面的代码复制到dao中,没错,就是复制粘贴过去。接着在serviceImpl中实现service接口,在实现的方法里调用dao里面的方法。最后配置map文件,在map配置里标签里的ID就是dao方法里的函数名,在标签里写好方法实现
#{}:可以以任意的名字获取参数值
什么是C3p0配置数据源?
就是数据库连接所需要配置的一些参数,驱动,用户名,密码等等
在来说说mapper里面要配置 的一些标签:<insert,<delete )等等,以及所需要配置的元素!
这是博客代码
<?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对应一个dao -->
<mapper namespace="com.dy.dao.UserDao">
<insert
<!-- 1. id (必须配置)
id是命名空间中的唯一标识符,可被用来代表这条语句。
一个命名空间(namespace) 对应一个dao接口,
这个id也应该对应dao里面的某个方法(相当于方法的实现),因此id 应该与方法名一致 -->
id="insertUser"
<!-- 2. parameterType (可选配置, 默认为mybatis自动选择处理)
将要传入语句的参数的完全限定类名或别名, 如果不配置,mybatis会通过ParameterHandler 根据参数类型默认选择合适的typeHandler进行处理
parameterType 主要指定参数类型,可以是int, short, long, string等类型,也可以是复杂类型(如对象) -->
parameterType="com.demo.User"
这是实战代码:
<mapper namespace="com.ischoolbar.programmer.dao.admin.UserDao">
<!-- 根据用户名查找用户 -->
<select id="findByUsername" parameterType="String" resultType="User">
select * from user where username = #{username}
</select>
<!-- 添加用户 -->
<insert id="add" parameterType="User">
insert into user(id,username,password,roleId,photo,sex,age,address) values(null,#{username},#{password},#{roleId},#{photo},#{sex},#{age},#{address})
</insert>
<!-- 修改用户 -->
<update id="edit" parameterType="User">
update user set username = #{username},roleId = #{roleId},photo = #{photo},sex = #{sex},age = #{age},address = #{address} where id = #{id}
</update>
<!-- 修改用户密码 -->
<update id="editPassword" parameterType="User">
update user set password = #{password} where id = #{id}
</update>
先看代码,再提问题:
<!-- 修改用户密码 -->
<update id="editPassword" parameterType="User">
update user set password = #{password} where id = #{id}
</update>
<!-- 删除用户 -->
<delete id="delete" parameterType="String">
delete from user where id in(${value})
</delete>
注意到这里修改用户密码使用的是#{},而删除用户使用的是${},这两种有什么区别呢?
#{} 这种取值是编译好SQL语句再取值
${} 这种是取值以后再去编译SQL语句
#{}方式能够很大程度防止sql注入。
$方式无法防止Sql注入。
¥方式一般用于传入数据库对象,例如传入表名.
一般能用#的就别用$.