增删改查实现
1. UserMapper.java -->接口类
int addUser(User user);//增
int deleteUser(int id);//删
int updateUser(User user);//改
User getUserById(int id);//查
List<User> getUserLike(String name);//模糊查询
2. UserMapper.xml
//增
<insert id="addUser" parameterType="com.mybatis_test.pojo.User" >
insert into mybatis.user(id,username,password) values (#{id},#{username},#{password})
</insert>
//删
<delete id="deleteUser" parameterType="com.mybatis_test.pojo.User">
delete from mybatis.user where id = #{id}
</delete>
//改
<update id="updateUser" parameterType="com.mybatis_test.pojo.User">
update mybatis.user set username =#{username},password=#{password} where id = #{id};
</update>
//查
<select id="getUserById" resultType="com.mybatis_test.pojo.User">
select * from mybatis.user where id = #{id}
</select>
//模糊查询
<select id="getUserLike" resultType="com.mybatis_test.pojo.User">
select * from mybatis.user where username like "%"#{value}"%";
</select>
//这里的模糊查询设计到一个问题,附在最后
重点要注意
- 增删改事务需要提交!
- 标签要对应
- 配置文件当中的映射要写对
- 传递的参数多于两个的时候,在接口方法的参数前加 @Param属性!!
User selectUserByNP(@Param("username") String username,@Param("pwd") String pwd);
<select id="selectUserByNP" resultType="com.kuang.pojo.User">
select * from user where name = #{username} and pwd = #{pwd}
</select>
Sql语句编写的时候,直接取@Param中设置的值即可,不需要单独设置参数类型
Map的使用
1. 例子
int addUser2(Map<String,Object>map);
<insert id="addUser2" parameterType="map" >
insert into mybatis.user(id,username,password) values (#{userid},#{username},#{passworD})
</insert>
2. 参数过多考虑使用Map
配置解析
- 配置顺序
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
注意元素节点的顺序!顺序不对会报错
//注意不是都需要配置的
- 数据库的配置
Mybatis核心配置文件中加上这样的语句
<properties resource="db.properties"/>
db.properties写法(放到resources下)
driver=com.mysql.cj.jdbc.Driver //mysql8.* 才这样写 mysql5.* 不用 cj
url=你的url
username=用户
password=密码
待编辑
附:模糊查询
- 在Java代码中添加sql通配符
string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like #{value}
</select>
- 在sql语句中拼接通配符,会引起sql注入
string wildcardname = “smi”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like "%"#{value}"%"
</select>