Mybatis_crud
* 一般情况下连接数据库的信息最好单独写在配置文件中,这样用户修改起来方便。
- 在类路径下新建一个 jdbc.properties文件,配置连接数据库所需信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=123456
- 然后在Mybatis的核心配置文件中引入该配置文件
<!--引入JDBC配置文件-->
<properties resource="jdbc.properties">
</properties>
- 然后在属性值里写 ${配置文件中值得key} <property name="driver" value="${jdbc.driver}"/>
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
* 两个配置文件的作用
- mybatis-3-config.dtd Mybatis核心配置文件XML的代码提示
- mybatis-3-mapper.dtd SqlMapper sql配置文件XML的代码提示
- 这两个文件有网络的情况下是自动配置的,如果没有网络的话需要下载以后再IDEA里配置一下。
* Sql配置文件中的各种属性的作用
- id属性: id具有唯一性,代表了本条sql语句,id用来传给Java程序,就代表了本条SQL语句
- resultType属性: 告诉Mybatis所查询出的数据最终查询出数据后所要封装成的类型,要写全类名。
- AS关键字: 实体类的属性名和数据库表中的字段名是怎么匹配的呢? 需要通过SQL语句的 AS关键字,给数据库中字段名取别名,使数据库中的字段名和实体类中的属性名相一致
- Mybatis中的Sql语句占位符不能使用问号,必须使用 #{} , 大括号中写javabean的属性名
- 当一个Sql语句的占位符只有一个的时候占位符 #{可以随意编写},Mybatis自动赋值。
- parameterType属性是用来给SQL语句的占位符传值的,告诉Mybatis所要传给占位符的值是什么类型的数据
- parameterType=“简单类型”的时候,parameterType属性可以省略不写。
- javabean实体类 给占位符传值的时候,程序员需要告诉Mybatis javabean的哪个属性传给哪个占位符,这就要保证属性名和数据库表中的列名保持一致。
* 插入数据(insert)
- Sql映射文件 SqlMapper.xml
<!--插入数据-->
<insert id="addDataForUserSql" parameterType="com.shige.mybatis.User">
insert into t_userinfo(username,email,userpwd)values(#{userName},#{userEmail},#{userPwd});
</insert>
- java程序
//insert操作,第一个参数是sql语句id,第二个参数是Object类型的,所需要插入数据的类型。
int count = sqlSession.insert("addDataForUserSql",user); //返回值代表影响数据库表几行数据
System.out.println(count);
* 插入更新修改(updata)
- Sql映射文件 SqlMapper.xml
<!--修改数据-->
<update id="updateDataForUserSql" parameterType="com.shige.mybatis.User">
update t_userinfo set userpwd=#{userPwd} where username=#{userName};
</update>
- java程序
//update语句
int count = sqlSession.update("updateDataForUserSql", user);
System.out.println(count);
* 查询数据(select)
- Sql映射文件 SqlMapper.xml
<!--查询数据-->
<select id="getDataForUserSql" resultType="com.shige.mybatis.User" parameterType="java.lang.String" >
select username,email,userpwd from t_userinfo where username=#{userName};
</select>
<!--查询所有数据-->
<select id="getDataForAllUserSql" resultType="com.shige.mybatis.User">
select * from t_userinfo;
</select>
- java程序
//select 语句 查询一条数据
Object userResult = sqlSession.selectOne("getDataForUserSql","Morty");
System.out.println(userResult);
// select 查询所有数据
List<User> userList = sqlSession.selectList("getDataForAllUserSql");
for(User user1:userList){
System.out.println(user1);
}
* 删除数据(delete)
- Sql映射文件 SqlMapper.xml
<!--删除数据-->
<delete id="delDataForUserSql" parameterType="java.lang.String">
delete from t_userinfo where username=#{username};
</delete>
- java程序
int count = sqlSession.delete("delDataForUserSql","Morty"); // 直接传参
System.out.println(count);