Mybatis学习总结2

增删改查实现

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>
//这里的模糊查询设计到一个问题,附在最后

重点要注意

  1. 增删改事务需要提交!
  2. 标签要对应
  3. 配置文件当中的映射要写对
  4. 传递的参数多于两个的时候,在接口方法的参数前加 @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

配置解析

  1. 配置顺序
    properties(属性)
    settings(设置)
    typeAliases(类型别名)
    typeHandlers(类型处理器)
    objectFactory(对象工厂)
    plugins(插件)
    environments(环境配置)
    environment(环境变量)
    transactionManager(事务管理器)
    dataSource(数据源)
    databaseIdProvider(数据库厂商标识)
    mappers(映射器)
    注意元素节点的顺序!顺序不对会报错
    //注意不是都需要配置的

  1. 数据库的配置
    Mybatis核心配置文件中加上这样的语句
<properties resource="db.properties"/>

db.properties写法(放到resources下)

driver=com.mysql.cj.jdbc.Driver //mysql8.* 才这样写 mysql5.* 不用 cj
url=你的url
username=用户
password=密码

待编辑

附:模糊查询

  1. 在Java代码中添加sql通配符
string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
    select * from foo where bar like #{value}
</select>
  1. 在sql语句中拼接通配符,会引起sql注入
string wildcardname = “smi”;
list<name> names = mapper.selectlike(wildcardname);

<select id=”selectlike”>
    select * from foo where bar like "%"#{value}"%"
</select>
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
原文地址:https://www.cnblogs.com/xp-thebest/p/13812274.html